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