module DailyReporter::Mail
Public Class Methods
compose_message(message, email)
click to toggle source
# File lib/daily_reporter/mail.rb, line 41 def compose_message(message, email) from = "From: <#{Settings.mail.username}>" to = "To: <#{email}>" subject = "Subject: Re: #{Settings.mail.bot_sign}" "#{from}\n#{to}\n#{subject}\n\n#{message}" end
get_mail_address()
click to toggle source
# File lib/daily_reporter/mail.rb, line 30 def get_mail_address imap = Net::IMAP.new(Settings.mail.imap_server, port: Settings.mail.imap_port) imap.authenticate('LOGIN', Settings.mail.username, Settings.mail.password) imap.examine('Inbox') id = imap.search([Settings.mail.bot_sign_container, Settings.mail.bot_sign, 'SINCE', Time.now.strftime('%-d-%b-%Y')]).last return nil unless id envelope = imap.fetch(id, 'ENVELOPE').first.attr['ENVELOPE'] reply_to = envelope.reply_to.first "#{reply_to.mailbox}@#{reply_to.host}" end
send_status()
click to toggle source
# File lib/daily_reporter/mail.rb, line 7 def send_status unless status = Task.status puts 'empty status' return end unless email = get_mail_address puts 'email is absent' return end username = Settings.mail.username begin Net::SMTP.start(Settings.mail.smtp_server, 25, Settings.mail.smtp_server, Settings.mail.username, Settings.mail.password, :plain) do |smtp| smtp.enable_starttls smtp.send_message compose_message(status, email), username, [email] smtp.finish end Task.clear_status rescue Exception => e puts e end end