class ArMailerAWS::Clients::SMTP
Public Instance Methods
send_email(smtp, email)
click to toggle source
# File lib/ar_mailer_aws/clients/smtp.rb, line 36 def send_email(smtp, email) log "send email to #{email.to}" client_log smtp.send_message(email.mail, email.from, email.to) email.destroy @sent_count += 1 end
send_emails(emails)
click to toggle source
# File lib/ar_mailer_aws/clients/smtp.rb, line 7 def send_emails(emails) session = Net::SMTP.new(settings[:address], settings[:port]) session.enable_starttls_auto if settings[:enable_starttls_auto] begin session.start(settings[:domain], settings[:user_name], settings[:password], settings[:authentication]) do |smtp| emails.each do |email| begin break if exceed_quota? send_email(smtp, email) rescue Net::SMTPFatalError => e handle_email_error(e, email, email_error: true) session.reset rescue Net::SMTPServerBusy log 'server too busy, stopping delivery cycle' return rescue Net::SMTPUnknownError, Net::SMTPSyntaxError, TimeoutError, Timeout::Error => e handle_email_error(e, email, email_error: true) session.reset rescue => e handle_email_error(e, email) end end end rescue => e log "ERROR in SMTP session: #{e.message}\n #{e.backtrace.join("\n ")}", :error ArMailerAWS.error_proc.call(nil, e) if ArMailerAWS.error_proc end end