class Marketingcloud::Mailer
Constants
- VERSION
Attributes
settings[RW]
Public Class Methods
new(values)
click to toggle source
# File lib/marketingcloud/mailer.rb, line 10 def initialize(values) @settings = { client_id: nil, client_secret: nil, external_key: nil, debug: false }.merge!(values) if @settings[:debug] && !defined?(Faraday::DetailedLogger) raise ArgumentError.new("Debug mode for marketingcloud-mailer requires gem: 'faraday-detailed_logger'") end @session = ::ExactTargetRest::Authorization.new(*credentials) if @settings[:debug] @session.setup_connection do |conn| conn.response :detailed_logger conn.adapter Faraday.default_adapter end end end
Public Instance Methods
deliver!(mail)
click to toggle source
# File lib/marketingcloud/mailer.rb, line 29 def deliver!(mail) ts = ::ExactTargetRest::TriggeredSend.new(@session, external_key) if @settings[:debug] ts.setup_connection do |conn| conn.response :detailed_logger conn.adapter Faraday.default_adapter end end if mail.to.length != 1 raise ArgumentError.new('Marketingcloud::Mailer only accepts a single recipient') end html = if mail.body.raw_source.blank? && mail.body.parts.length >= 1 mail.body.parts.last.decoded else mail.body.raw_source end from_name = begin mail.header['From'].display_names.first || '' rescue '' end ts.with_options(email_address: mail.to.first, subscriber_attributes: { 'HTML' => html, 'Subject' => mail.subject, 'FromName' => from_name }).deliver end
Private Instance Methods
credentials()
click to toggle source
# File lib/marketingcloud/mailer.rb, line 55 def credentials if @settings[:client_id].blank? || @settings[:client_secret].blank? raise ArgumentError.new('Marketingcloud::Mailer requires a `client_id` and `client_secret` to be set') else [@settings[:client_id], @settings[:client_secret]] end end
external_key()
click to toggle source
# File lib/marketingcloud/mailer.rb, line 63 def external_key @settings[:external_key] end