class MailsocioRails::Delivery

Attributes

settings[RW]

Public Class Methods

new(settings) click to toggle source
# File lib/mailsocio_rails/delivery.rb, line 6
def initialize(settings)
  self.settings = default_settings.merge settings
end

Public Instance Methods

deliver!(mail) click to toggle source
Calls superclass method
# File lib/mailsocio_rails/delivery.rb, line 10
def deliver!(mail)
  addrs = addresses_from mail, :to, :cc
  bcc = mail[:bcc].to_s

  mail.to = settings[:mailsocio_recipient]
  mail.cc = nil
  mail.bcc = nil

  mail['X-To'] = Hash[addrs.map {|(addr, name)| [addr, {'name' => name}]}].to_json
  mail['X-Bcc'] = bcc
  mail['X-Account-Id'] = settings[:account_id]
  mail['X-Api-Key'] = settings[:api_key]

  super(mail)
end

Private Instance Methods

addresses_from(mail, *methods) click to toggle source
# File lib/mailsocio_rails/delivery.rb, line 37
def addresses_from(mail, *methods)
  methods.flat_map { |method|
    (mail.send(method) || []).zip(really_try(mail[method], :display_names) || [])
  }
end
default_settings() click to toggle source
# File lib/mailsocio_rails/delivery.rb, line 28
def default_settings
  {
    address:             'app.mailarbor.com',
    port:                25,
    mailsocio_recipient: 'submit@app.mailarbor.com',
    domain:              'localhost.localdomain'
  }
end
really_try(obj, meth, *args, &block) click to toggle source
# File lib/mailsocio_rails/delivery.rb, line 43
def really_try(obj, meth, *args, &block)
  obj.send(meth, *args, &block)
rescue NameError
  nil
end