SendGrid gem for Rails 3 <img src=“https://secure.travis-ci.org/PavelTyk/sendgrid-rails.png” />¶ ↑
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)
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
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
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
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
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 can be applied to any of your email messages and can be configured through SendGrid gem.
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
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