Code Monkey home page Code Monkey logo

sendgrid's Introduction

sendgrid

Now updated to work with Rails 3.

What is SendGrid?

SendGrid is an awesome service that helps you send large amounts of email (bells and whistles included) without spending large amounts of money. This gem allows for painless integration between ActionMailer and the SendGrid SMTP API. The current scope of this gem is focused around setting configuration options for outgoing email (essentially, setting categories, filters and the settings that can accompany those filters). SendGrid's service allows for some other cool stuff (such as postback notification of unsubscribes, bounces, etc.), but those features are currently outside the scope of this gem.

Visit SendGrid to learn more.

Getting Started

First of all, you'll need the gem. It's at http://rubygems.org/gems/sendgrid. If you're using Bundler, just add the following to your Gemfile.

gem 'sendgrid'

Before you can do anything with the sendgrid gem, you'll need to create your very own SendGrid account. Go ahead and do so at http://sendgrid.com (there's even a FREE account option).

Next, update your application's SMTP settings to use SendGrid's servers (see SendGrid's getting started guide for instructions).

Example:

ActionMailer::Base.smtp_settings = {
  :address => "smtp.sendgrid.net",
  :port => 25,
  :domain => "mysite.com",
  :authentication => :plain,
  :user_name => "[email protected]",
  :password => "sendgrid_password"
}

Using the sendgrid Gem

If you do not already have an ActionMailer class up and running, then check out this guide.

  1. add the following line within your mailer class:

    include SendGrid

  2. customize your sendgrid settings:

There are 2 main types of settings

  • Category settings
  • Enable/disable settings

You can set both global and per-email settings - the same syntax is used in either case. Here is an example of what typical usage may look like:

class MyMailer < ActionMailer::Base
  include SendGrid
  sendgrid_category :use_subject_lines
  sendgrid_enable   :ganalytics, :opentrack

  def welcome_message(user)
    sendgrid_category "Welcome"
    mail :to => user.email, :subject => "Welcome #{user.name} :-)"
  end

  def goodbye_message(user)
    sendgrid_disable :ganalytics
    mail :to => user.email, :subject => "Fare thee well :-("
  end
end

Category settings can be any text you like and SendGrid's website will allow you to view email statistics per-category (very nice). There is also a custom global setting that will automatically use the subject line of each email as the sendgrid_category:

sendgrid_category :use_subject_lines

If you have any dynamic subject lines, you'll want to override this setting within the mailer method. Calling sendgrid_category from within one of your mailer methods will override this global setting. Similarly, calling sendgrid_enable/sendgrid_disable from within a mailer method will add or remove from any defaults that may have been set globally.

Here are a list of supported options for sendgrid_enable and sendgrid_disable:

  • :opentrack
  • :clicktrack
  • :ganalytics
  • :gravatar
  • :subscriptiontrack
    • Call sendgrid_subscriptiontrack_text(:html => 'Unsubscribe <% Here %>', :plain => 'Unsubscribe Here: <% %>') to set a custom format for html/plain or both.
    • OR Call sendgrid_subscriptiontrack_text(:replace => '|unsubscribe_link|') to replace all occurrences of |unsubscribe_link| with the url of the unsubscribe link
  • :footer
    • Call sendgrid_footer_text(:html => 'My HTML footer rocks!', :plain => 'My plain text footer is so-so.') to set custom footer text for html, plain or both.
  • :spamcheck
    • Call sendgrid_spamcheck_maxscore(4.5) to set a custom SpamAssassin threshold at which SendGrid drops emails (default value is 5.0).

For further explanation see SendGrid's wiki page on filters.

Delivering to multiple recipients

There is a per-mailer-method setting that can be used to deliver campaigns to multiple (many) recipients in a single delivery/SMTP call. It is quite easy to build a robust mass-delivery system utilizing this feature, and it is quite difficult to deliver a large email campaign quickly without this feature. Note: While it may be worth asking yourself, a SendGrid engineer told me it's best to keep the number of recipients to <= 1,000 per delivery.

sendgrid_recipients ["[email protected]", "[email protected]", "[email protected]", ...]

One issue that arises when delivering multiple emails at once is custom content. Luckily, there is also a per-mailer-method setting that can be used to substitute custom content.

sendgrid_substitute "|subme|", ["sub text for 1st recipient", "sub text for 2nd recipient", "sub text for 3rd recipient", ...]

In this example, if |subme| is in the body of your email SendGrid will automatically substitute it for the string corresponding the recipient being delivered to. NOTE: You should ensure that the length of the substitution array is equal to the length of the recipients array.

TODO

  • Test coverage (I would appreciate help writing tests).
  • Possibly integrate with SendGrid's Event API and some of the other goodies they provide.

sendgrid's People

Contributors

chaslemley avatar davidclain avatar rmm5t avatar stephenb avatar yenif avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.