Module: Reap::Utilities::NetUtils
- Included in:
- Manager
- Defined in:
- lib/reap/utilities/netutils.rb
Instance Method Summary collapse
-
#email(message, settings) ⇒ Object
Email function to easily send out an email.
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.
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(, settings) settings ||= {} settings.rekey server = settings[:server] account = settings[:account] || ENV['EMAIL_ACCOUNT'] passwd = settings[:password] || ENV['EMAIL_PASSWORD'] login = 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 account ||= mail_from login ||= :plain login = login.to_sym #mail_to = nil if mail_to.empty? raise ArgumentError, "missing email field -- server" unless server raise ArgumentError, "missing email field -- account" unless account 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("#{account} 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 << 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, account, passwd, login) do |smtp| smtp.(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 |