Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

send_grid_mailer

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

send_grid_mailer

  • 2.3.0
  • Rubygems
  • Socket score

Version published
Maintainers
2
Created
Source

SendGrid Mailer

Gem Version CircleCI 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

We provide two delivery methods. For development environments, where sending the email is not required, you can use :sendgrid_dev to open it in the browser:

config.action_mailer.delivery_method = :sendgrid_dev
config.action_mailer.sendgrid_dev_settings = {
  api_key: "YOUR-SENDGRID-API-KEY"
}

Otherwise, you can use :sendgrid to actually send the email:

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

To use this functionality you need to add the SENDGRID_API_KEY and, in case you do not add the api key, the gem would not search in Sendgrid for the 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
Set Dynamic Template Data
class TestMailer < ApplicationMailer
  def my_email
    dynamic_template_data({ key1: "value1", key2: "value2" })
    mail
  end
end
Add Category
class TestMailer < ApplicationMailer
  def my_email
    add_category("value")
    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.

Publishing

On master/main branch...

  1. Change VERSION in lib/send_grid_mailer/version.rb.
  2. Change Unreleased title to current version in CHANGELOG.md.
  3. Commit new release. For example: Releasing v0.1.0.
  4. Create tag. For example: git tag v0.1.0.
  5. Push tag. For example: git push origin v0.1.0.

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.

FAQs

Package last updated on 03 Jul 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc