An adapter that allows the usage of ActionMailer 3 syntax with Sailthru’s Ruby Client Library
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" }
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
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
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.
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)
-
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 © 2011 Dan Langevin. See LICENSE.txt for further details.