Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Sailthru Mailer for Rails 2
Ruby
Branch: master
Pull request Compare This branch is 4 commits behind LifebookerInc:master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
spec
.document
.gitignore
.rspec
Gemfile
Gemfile.lock
Guardfile
LICENSE.txt
README.rdoc
Rakefile
VERSION
sailthru_mailer.gemspec

README.rdoc

Sailthru Mailer

An adapter that allows the usage of ActionMailer 3 syntax with Sailthru's Ruby Client Library

Installation

gem install sailthru_mailer
rails g sailthru_mailer

This will generate an initializer in which you can put your api_key and api_secret. E.g.

# Rails.root/config/initializers/sailthru_mailer.rb
SailthruMailer.settings = {
  :api_key => "MYKEY",
  :api_secret => "MYSECRET",
  :api_url => "https://api.sailthru.com"
}

Setting Defaults

SailthruMailer supports the per-mailer configuration that ActionMailer provides.

class MyMailer < SailthruMailer::Base
  defaults(:from => "lifebooker@lifebooker.com", :reply_to => "no-reply@lifebooker.com")
end

We also provide a (nicer) interface within a defaults block

class MyMailer < SailthruMailer::Base
  defaults do
    from("lifebooker@lifebooker.com")
    reply_to("no-reply@lifebooker.com")
  end
end

Or even outside of the defaults block (the block is just syntactic sugar)

class MyMailer < SailthruMailer::Base
  from("lifebooker@lifebooker.com")
  reply_to("no-reply@lifebooker.com")
end

Usage

This gem is designed as a drop-in replacement for ActionMailer. You should be able to just replace all instances of ActionMailer::Base with SailthruMailer::Base

Under the Hood

There are some differences between the way ActionMailer and Sailthru work. ActionMailer provides use a Mail::Message, which is basically just an email (headers and body) that has been through AbstractController's rendering engine.

Examples

Sailthru has us place templates within their system and provide a template name, email address(es) and variables that go within the email. We account for this by allowing you to name each method after a template and supply the variables within the body hash. #to_hash is called on any objects in the body

# Rails.root/app/models/user.rb
class User < ActiveRecord::Base
  # attributes: first_name, last_name, email
end

# Rails.root/app/mailers/my_mailer.rb
class MyMailer < SailthruMailer::Base
  def sailthru_template_name(user)
    to(user.email) # aliased as recipients(user.email)
    body[:user] = user
  end
end

MyMailer.sailthru_template_name(User.first).deliver

This will send a request to Sailthru:

sailthru.send(:sailthru_template_name, "dan@lifebooker.com", {:user => {:first_name => "Dan", :last_name => "Langevin", :email => "dan.langevin@lifebooker.com"}}, {} #additional options, Time.now.utc.to_s #send date)

Contributing to Sailthru Mailer

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet

  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it

  • Fork the project

  • Start a feature/bugfix branch

  • Commit and push until you are happy with your contribution

  • Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.

  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.

Copyright

Copyright © 2011 Dan Langevin. See LICENSE.txt for further details.

Something went wrong with that request. Please try again.