Module: SendGrid

Defined in:
lib/sendgrid/version.rb,
lib/sendgrid.rb,
lib/sendgrid/railtie.rb

Overview

:nodoc:

Defined Under Namespace

Modules: ClassMethods Classes: Railtie

Constant Summary collapse

VALID_OPTIONS =
[
  :opentrack,
  :clicktrack,
  :ganalytics,
  :gravatar,
  :subscriptiontrack,
  :footer,
  :spamcheck,
  :bypass_list_management
]
VALID_GANALYTICS_OPTIONS =
[
  :utm_source,
  :utm_medium,
  :utm_campaign,
  :utm_term,
  :utm_content
]
VERSION =
"2.0.0"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/sendgrid.rb', line 24

def self.included(base)
  base.class_eval do
    class << self
      attr_accessor :default_sg_category, :default_sg_options, :default_subscriptiontrack_text,
                    :default_footer_text, :default_spamcheck_score, :default_sg_unique_args
    end
    attr_accessor :sg_category, :sg_options, :sg_disabled_options, :sg_recipients, :sg_substitutions,
                  :subscriptiontrack_text, :footer_text, :spamcheck_score, :sg_unique_args, :sg_send_at
  end

  # NOTE: This commented-out approach may be a "safer" option for Rails 3, but it
  # would cause the headers to get set during delivery, and not when the message is initialized.
  # If base supports register_interceptor (i.e., Rails 3 ActionMailer), use it...
  # if base.respond_to?(:register_interceptor)
  #   base.register_interceptor(SendgridInterceptor)
  # end

  base.extend(ClassMethods)
end

Instance Method Details

#create!(method_name, *parameters) ⇒ Object

Sets the custom X-SMTPAPI header after creating the email but before delivery NOTE: This override is used for Rails 2 ActionMailer classes.



188
189
190
191
192
193
194
195
196
197
# File 'lib/sendgrid.rb', line 188

def create!(method_name, *parameters)
  super
  if @sg_substitutions && !@sg_substitutions.empty?
    @sg_substitutions.each do |find, replace|
      raise ArgumentError.new("Array for #{find} is not the same size as the recipient array") if replace.size != @sg_recipients.size
    end
  end
  puts "SendGrid X-SMTPAPI: #{sendgrid_json_headers(mail)}" if Object.const_defined?("SENDGRID_DEBUG_OUTPUT") && SENDGRID_DEBUG_OUTPUT
  @mail['X-SMTPAPI'] = sendgrid_json_headers(mail)
end

#sendgrid_category(category) ⇒ Object

Call within mailer method to override the default value.



102
103
104
# File 'lib/sendgrid.rb', line 102

def sendgrid_category(category)
  @sg_category = category
end

#sendgrid_disable(*options) ⇒ Object

Call within mailer method to remove one of the defaults.



124
125
126
127
# File 'lib/sendgrid.rb', line 124

def sendgrid_disable(*options)
  @sg_disabled_options = Array.new unless @sg_disabled_options
  options.each { |option| @sg_disabled_options << option if VALID_OPTIONS.include?(option) }
end

#sendgrid_enable(*options) ⇒ Object

Call within mailer method to add an option not in the defaults.



118
119
120
121
# File 'lib/sendgrid.rb', line 118

def sendgrid_enable(*options)
  @sg_options = Array.new unless @sg_options
  options.each { |option| @sg_options << option if VALID_OPTIONS.include?(option) }
end

Call within mailer method to override the default value.



149
150
151
# File 'lib/sendgrid.rb', line 149

def sendgrid_footer_text(texts)
  @footer_text = texts
end

#sendgrid_ganalytics_options(options) ⇒ Object

Call within mailer method to set custom google analytics options sendgrid.com/documentation/appsGoogleAnalytics



160
161
162
163
# File 'lib/sendgrid.rb', line 160

def sendgrid_ganalytics_options(options)
  @ganalytics_options = []
  options.each { |option| @ganalytics_options << option if VALID_GANALYTICS_OPTIONS.include?(option[0].to_sym) }
end

#sendgrid_recipients(emails) ⇒ Object

Call within mailer method to add an array of recipients



130
131
132
133
# File 'lib/sendgrid.rb', line 130

def sendgrid_recipients(emails)
  @sg_recipients = Array.new unless @sg_recipients
  @sg_recipients = emails
end

#sendgrid_send_at(utc_timestamp) ⇒ Object

Call within mailer method to set send time for this mail



107
108
109
# File 'lib/sendgrid.rb', line 107

def sendgrid_send_at(utc_timestamp)
  @sg_send_at = utc_timestamp
end

#sendgrid_spamcheck_maxscore(score) ⇒ Object

Call within mailer method to override the default value.



154
155
156
# File 'lib/sendgrid.rb', line 154

def sendgrid_spamcheck_maxscore(score)
  @spamcheck_score = score
end

#sendgrid_subscriptiontrack_text(texts) ⇒ Object

Call within mailer method to override the default value.



144
145
146
# File 'lib/sendgrid.rb', line 144

def sendgrid_subscriptiontrack_text(texts)
  @subscriptiontrack_text = texts
end

#sendgrid_substitute(placeholder, subs) ⇒ Object

Call within mailer method to add an array of substitions NOTE: you must ensure that the length of the substitions equals the

length of the sendgrid_recipients.


138
139
140
141
# File 'lib/sendgrid.rb', line 138

def sendgrid_substitute(placeholder, subs)
  @sg_substitutions = Hash.new unless @sg_substitutions
  @sg_substitutions[placeholder] = subs
end

#sendgrid_unique_args(unique_args = {}) ⇒ Object

Call within mailer method to set unique args for this email. Merged with class-level unique args, if any exist.



113
114
115
# File 'lib/sendgrid.rb', line 113

def sendgrid_unique_args(unique_args = {})
  @sg_unique_args = unique_args
end