Module: Reap::Utilities::NetUtils

Included in:
Manager
Defined in:
lib/reap/utilities/netutils.rb

Instance Method Summary collapse

Instance Method Details

#email(message, settings) ⇒ Object

Email function to easily send out an email.

Settings:

subject      Subject of email message.
from         Message FROM address [email].
to           Email address to send announcemnt.
server       Email server to route message.
port         Email server's port.
port_secure  Email server's port.
domain       Email server's domain name.
account      Email account name if needed.
password     Password for login..
login        Login type: plain, cram_md5 or login [plain].
secure       Uses TLS security, true or false? [false]
message      Mesage to send -or-
file         File that contains message.

Raises:

  • (ArgumentError)


55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/reap/utilities/netutils.rb', line 55

def email(message, settings)
  settings ||= {}
  settings.rekey

  server    = settings[:server]
     = settings[:account]  || ENV['EMAIL_ACCOUNT']
  passwd    = settings[:password] || ENV['EMAIL_PASSWORD']
       = settings[:login]
  subject   = settings[:subject]
  mail_to   = settings[:to]     || settings[:mail_to]
  mail_from = settings[:from]   || settings[:mail_from]
  secure    = settings[:secure]
  domain    = settings[:domain] || server

  port      = (settings[:port_secure] || 465) if secure
  port      = (settings[:port] || 25) unless secure

   ||= mail_from
     ||= :plain

   = .to_sym

  #mail_to = nil if mail_to.empty?

  raise ArgumentError, "missing email field -- server"  unless server
  raise ArgumentError, "missing email field -- account" unless 
  raise ArgumentError, "missing email field -- subject" unless subject
  raise ArgumentError, "missing email field -- to"      unless mail_to
  raise ArgumentError, "missing email field -- from"    unless mail_from

  passwd ||= password("#{} password:")

  mail_to = [mail_to].flatten.compact

  msg = ""
  msg << "From: #{mail_from}\n"
  msg << "To: #{mail_to.join(';')}\n"
  msg << "Subject: #{subject}\n"
  msg << ""
  msg << message

  if secure
    Net::SMTP.send(:include, Net::SMTP::TLS)
    Net::SMTP.enable_tls #if secure #if Net::SMTP.respond_to?(:enable_tls) and secure
  end

  begin
    Net::SMTP.start(server, port, domain, , passwd, ) do |smtp|
      smtp.send_message(msg, mail_from, mail_to)
    end
    puts "Email sent successfully to #{mail_to.join(';')}."
    return true
  rescue => e
    if trace?
      raise e
    else
      abort "Email delivery failed."
    end
  end
end