class ActionGmailer::DeliveryMethod

Attributes

account[RW]
auth_type[RW]
helo_domain[RW]
oauth2_token[RW]
settings[R]
smtp_host[RW]
smtp_port[RW]

Public Class Methods

new(settings) click to toggle source
# File lib/action_gmailer.rb, line 21
def initialize(settings)
  self.settings = settings
end

Public Instance Methods

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

  smtp = Net::SMTP.new(smtp_host, smtp_port)
  smtp.enable_starttls_auto
  smtp.start(helo_domain, account, oauth2_token, auth_type) do
    smtp.sendmail(message, envelope_from, destinations)
  end
rescue StandardError => exp
  raise DeliveryError, exp.message
end
settings=(settings) click to toggle source
# File lib/action_gmailer.rb, line 25
def settings=(settings)
  @settings = settings
  set_accessors_from_settings!
end

Private Instance Methods

default_auth_type() click to toggle source
# File lib/action_gmailer.rb, line 56
def default_auth_type
  :xoauth2
end
default_helo_domain() click to toggle source
# File lib/action_gmailer.rb, line 52
def default_helo_domain
  'gmail.com'
end
default_smtp_host() click to toggle source
# File lib/action_gmailer.rb, line 44
def default_smtp_host
  'smtp.gmail.com'
end
default_smtp_port() click to toggle source
# File lib/action_gmailer.rb, line 48
def default_smtp_port
  587
end
set_accessors_from_settings!() click to toggle source
# File lib/action_gmailer.rb, line 60
def set_accessors_from_settings!
  @smtp_host    = settings[:smtp_host]    || default_smtp_host
  @smtp_port    = settings[:smtp_port]    || default_smtp_port
  @helo_domain  = settings[:helo_domain]  || default_helo_domain
  @auth_type    = settings[:auth_type]    || default_auth_type
  @oauth2_token = settings.fetch(:oauth2_token)
  @account      = settings.fetch(:account)
rescue KeyError
  raise DeliveryError, 'Missing required setting'
end