Class: Mandriller::Base

Inherits:
ActionMailer::Base
  • Object
show all
Includes:
SettingsMethods
Defined in:
lib/mandriller/base.rb

Constant Summary collapse

BOOLEAN_SETTINGS =
{
  auto_text:                 'X-MC-Autotext',
  auto_html:                 'X-MC-AutoHtml',
  url_strip_qs:              'X-MC-URLStripQS',
  preserve_recipients:       'X-MC-PreserveRecipients',
  inline_css:                'X-MC-InlineCSS',
  view_content_link:         'X-MC-ViewContentLink',
  important:                 'X-MC-Important',
}
STRING_SETTINGS =
{
  tracking_domain:           'X-MC-TrackingDomain',
  signing_domain:            'X-MC-SigningDomain',
  subaccount:                'X-MC-Subaccount',
  bcc_address:               'X-MC-BccAddress',
  ip_pool:                   'X-MC-IpPool',
  google_analytics_campaign: 'X-MC-GoogleAnalyticsCampaign',
  return_path_domain:        'X-MC-ReturnPathDomain',
}
JSON_SETTINGS =
{
  metadata:                  'X-MC-Metadata',
  merge_vars:                'X-MC-MergeVars',
}
ARRAY_SETTINGS =
{
  google_analytics:          'X-MC-GoogleAnalytics',
  tags:                      'X-MC-Tags',
}
DATETIME_SETTINGS =
{
  send_at:                   'X-MC-SendAt',
}

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SettingsMethods

included

Class Method Details

.set_template(template_name, block_name = nil) ⇒ Object



48
49
50
# File 'lib/mandriller/base.rb', line 48

def set_template(template_name, block_name = nil)
  self.mandrill_template = [template_name, block_name]
end

Instance Method Details

#mail(*args) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/mandriller/base.rb', line 57

def mail(*args)
  tracks = []
  tracks << (mandrill_open_track ? 'opens' : nil)
  if v = mandrill_click_track
    tracks << "clicks_#{v}"
  end
  tracks = tracks.compact.map(&:to_s)
  unless tracks.empty?
    tracks.each do |track|
      validate_values!(track, %w(opens clicks_all clicks_htmlonly clicks_textonly))
    end
    self.headers['X-MC-Track'] = tracks.join(',')
  end

  v = mandrill_template
  self.headers['X-MC-Template'] = v.join('|') unless v.nil? || v.empty?

  [BOOLEAN_SETTINGS, STRING_SETTINGS, JSON_SETTINGS, ARRAY_SETTINGS, DATETIME_SETTINGS].inject({}, :merge).each do |key, header_name|
    if is_mandrill_setting_defined?(key)
      self.headers[header_name] = get_mandrill_setting(key)
    end
  end

  super(*args)
end

#set_template(template_name, block_name = nil) ⇒ Object



53
54
55
# File 'lib/mandriller/base.rb', line 53

def set_template(template_name, block_name = nil)
  @mandrill_template = [template_name, block_name].compact
end