No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Gem to extend ActionMailer with SendGrid API support
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.5.0

Runtime

 Project Readme

SendGrid gem provides ActionMailer::Base extensions to use SendGrid API features in you emails. It extends ActionMailer with next methods:

substitute(patters_string, array_of_substitunion_strings)
uniq_args(hash_of_unique_args)
category(category_string)
open_tracking(enabled = true)
add_filter_setting(filter_name, setting_name, value)

Rails 3 configuration¶ ↑

In your Gemfile:

gem 'sendgrid-rails', '~> 2.0'

In config/initializers/mail.rb:

ActionMailer::Base.register_interceptor(SendGrid::MailInterceptor)

ActionMailer::Base.smtp_settings = {
  :address => 'smtp.sendgrid.net',
  :port => '25',
  :domain => 'example.com',
  :authentication => :plain,
  :user_name => 'login@example.com',
  :password => 'your password'
}

If you use Heroku, here what the mailer initializer may look like:

ActionMailer::Base.register_interceptor(SendGrid::MailInterceptor)

if ENV['SENDGRID_USERNAME'] && ENV['SENDGRID_PASSWORD']
  ActionMailer::Base.smtp_settings = {
    :address        => 'smtp.sendgrid.net',
    :port           => '465',
    :authentication => :plain,
    :user_name      => ENV['SENDGRID_USERNAME'],
    :password       => ENV['SENDGRID_PASSWORD'],
    :domain         => 'heroku.com',
    :enable_starttls_auto => true,
    :ssl => true
  }
  ActionMailer::Base.delivery_method = :smtp
end

Overriding default recipient in standard SMTP header¶ ↑

Dummy recipient email used in sent email’s “To” header and seen in received email’s Received header. By default set to ‘dummy@email.com’

In config/initializers/mail.rb:

SendGrid.configure do |config|
  config.dummy_recipient = 'noreply@example.com'
end

Usage examples¶ ↑

Adding multiple recipients:¶ ↑

class Mailer < ActionMailer::Base
  default :from => 'no-reply@example.com',
          :subject => 'An email sent via SendGrid'

  def email_with_multiple_recipients
    mail :to => %w(email1@email.com email2@email.com)
  end
end

Adding substitution vars¶ ↑

Mailer class definition:

class Mailer < ActionMailer::Base
  default :from => 'no-reply@example.com',
          :subject => 'An email sent via SendGrid with substitutions'

  def email_with_substitutions
    substitute '-user_name-', %w(User1 User2)

    mail :to => %w(email1@email.com email2@email.com), :body => "Hello, -user_name-!"
  end
end

Adding category¶ ↑

Mailer class definition:

class Mailer < ActionMailer::Base
  default :from => 'no-reply@example.com',
          :subject => 'An email sent via SendGrid with substitutions'

  def email_with_category
    category 'SendGridRocks'
    mail :to => 'email1@email.com'
  end
end

Apps (formerly called Filters)¶ ↑

Apps can be applied to any of your email messages and can be configured through SendGrid gem.

Open Tracking¶ ↑

Add an invisible image at the end of the email to track e-mail opens. If the email recipient has images enabled on the email client, a request to server for the invisible image is executed and an open is logged.

class Mailer < ActionMailer::Base
  default :from => 'no-reply@example.com',
          :subject => 'An email sent via SendGrid'

  def email_with_open_tracking_enabled
    open_tracking true
    mail :to => 'email@email.com'
  end
end

Change log¶ ↑

v3.1.0

  • Introduced ‘template_id` feature

v3.0.0

  • Depricated method ‘:alias_method_chain` has been replaced with `Module#prepend` Ruby 2.0 feature

  • Requires Ruby 2.0+

v2.0.5

  • Introduced ‘deliver_at` feature.

v2.0.4

  • CC and BCC are copied to SendGrid XSMTP-API header

v2.0.3

  • Ability to change “dummy_recipient” in config

v2.0.2

  • ApiHeader#to_json wraps array items with spaces

v2.0.1

  • Standard SMTP To attribute set to ‘dummy@email.com’ after recipients added to X-SMTPAPI header

v2.0

  • Using mail interceptor

  • ActionMailer::Base#add_recipients - removed

  • Standard SMTP To attribute get nullified after recipients added to X-SMTPAPI header