class ArMailerAWS::Mailer

Attributes

email_class[RW]

Public Class Methods

new(options={}) click to toggle source
# File lib/ar_mailer_aws/mailer.rb, line 6
def initialize(options={})
  self.email_class = options[:email_class] || ArMailerAWS.email_class.constantize
end

Public Instance Methods

deliver!(mail) click to toggle source
# File lib/ar_mailer_aws/mailer.rb, line 10
def deliver!(mail)
  envelope_from, destinations, message = check_params(mail)

  destinations.each do |destination|
    self.email_class.create! mail: message, to: destination, from: envelope_from
  end
end

Private Instance Methods

check_params(mail) click to toggle source
# File lib/ar_mailer_aws/mailer.rb, line 20
def check_params(mail)
  envelope_from = mail.return_path || mail.sender || mail.from_addrs.first
  if envelope_from.blank?
    raise ArgumentError.new('A sender (Return-Path, Sender or From) required to send a message')
  end

  destinations ||= mail.destinations if mail.respond_to?(:destinations) && mail.destinations
  if destinations.blank?
    raise ArgumentError.new('At least one recipient (To, Cc or Bcc) is required to send a message')
  end

  message ||= mail.encoded if mail.respond_to?(:encoded)
  if message.blank?
    raise ArgumentError.new('A encoded content is required to send a message')
  end

  [envelope_from, destinations, message]
end