Skip to content

Action Mailer adapter for using SendGrid

License

Notifications You must be signed in to change notification settings

LoveMondays/send_grid_mailer

 
 

Repository files navigation

SendGrid Mailer

Gem Version Build Status Coverage Status

Is an Action Mailer adapter for using SendGrid in a Rails application and It's built on top of the sengrid-ruby gem.

Installation

Add to your Gemfile:

gem "send_grid_mailer"
bundle install

In your environment file you need to add:

config.action_mailer.delivery_method = :sendgrid
config.action_mailer.sendgrid_settings = {
  api_key: "YOUR-SENDGRID-API-KEY"
}

Usage

With this adapter you will be able to:

Set E-mail's Subject

class TestMailer < ApplicationMailer
  def my_email
    set_subject("My Subject")
    mail
  end

  def my_email # through mail method's params
    mail(subject: "My Subject")
  end
end

Set E-mail's Body

class TestMailer < ApplicationMailer
  def my_email
    set_content("Body")
    mail
  end

  def my_email # through mail method's params
    mail(body: "<h1>Body</h1>", content_type: "text/html")
  end
end

Set E-mail's Sender

class TestMailer < ApplicationMailer
  default from: "default-sender@platan.us"

  def my_email
    set_sender("override-default-sender@platan.us")
    mail
  end

  def my_email # through mail method's params
    mail(from: "override@platan.us", body: "Body")
  end
end

Set E-mail's Recipients

class TestMailer < ApplicationMailer
  def my_email
    set_recipients(:to, "r1@platan.us", "r2@platan.us")
    set_recipients(:cc, ["r4@platan.us"])
    set_recipients(:bcc, "r5@platan.us")
    mail
  end

  def my_email # through mail method's params
    mail(
      to: ["r1@platan.us", "r2@platan.us"],
      cc: ["r4@platan.us"],
      bcc: "r5@platan.us"
    )
  end
end

Set E-mail's Headers

class TestMailer < ApplicationMailer
  def my_email
    headers["HEADER-1"] = "VALUE-1"
    headers["HEADER-2"] = "VALUE-2"
    mail
  end

  def my_email # through mail method's params
    mail(headers: { "HEADER-1" => "VALUE-1", "HEADER-2" => "VALUE-2" })
  end
end

Set E-mail's Attachments

class TestMailer < ApplicationMailer
  def my_email # using Action Mailer method
    attachments["platanus.png"] = File.read("file-path")
    mail
  end

  def my_email # using this gem method
    file = File.read("file-path")
    add_attachment(file, "platanus.png", "image/png", "inline")
    mail
  end
end

Set SendGrid's Template

class TestMailer < ApplicationMailer
  def my_email
    set_template_id("XXX")
    mail
  end

  def my_email # through mail method's params
    mail(template_id: "XXX")
  end
end

Add Substitutions in SendGrid's Template

class TestMailer < ApplicationMailer
  def my_email
    substitute "%key1%", "value1"
    substitute "%key2%", "value2"
    mail
  end
end

Remember: you need to specify al least: body, template_id or a Rails template.

Recipient Interceptor

This gem is compatible with Recipient Interceptor gem. However, this gem only uses its configuration. Internally, we modify the behaviour to play nice with sengrid-ruby gem. So, the current code is based on Recipient Interceptor v0.1.2. New versions may not work.

To make it work...

Add to your Gemfile:

gem "send_grid_mailer"
gem "recipient_interceptor"

In, for example, your /my-project/config/environments/development.rb file:

Mail.register_interceptor RecipientInterceptor.new(
  ENV["EMAIL_RECIPIENTS"],
  subject_prefix: '[STAGING]'
)

Testing

To run the specs you need to execute, in the root path of the gem, the following command:

bundle exec guard

You need to put all your tests in the /send_grid_mailer/spec/dummy/spec/ directory.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Credits

Thank you contributors!

Platanus

SendGrid Mailer is maintained by platanus.

License

SendGrid Mailer is © 2016 platanus, spa. It is free software and may be redistributed under the terms specified in the LICENSE file.

About

Action Mailer adapter for using SendGrid

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 89.1%
  • HTML 8.7%
  • CSS 1.2%
  • JavaScript 1.0%