Send emails asynchronously using sidekiq
Switch branches/tags
Latest commit 4a5881b Aug 14, 2014 @andersondias Merge pull request #15 from coderhs/master
[DocFix] Default queue of sidekiq mailer is mailer
Failed to load latest commit information.
lib [DocFix] Default queue of sidekiq mailer is mailer Aug 14, 2014
.gitignore Initial commit Oct 9, 2012
.travis.yml Adding Travis CI integration Jul 25, 2013
LICENSE Initial commit Oct 9, 2012 Fix typo again Oct 10, 2012
Rakefile Initial commit Oct 9, 2012
sidekiq_mailer.gemspec support for sidekiq 3.0 Apr 5, 2014


Sidekiq::Mailer adds to your ActionMailer classes the ability to send mails asynchronously.


If you want to make a specific mailer to work asynchronously just include Sidekiq::Mailer module:

class MyMailer < ActionMailer::Base
  include Sidekiq::Mailer

  def welcome(to)

Now every deliver you make with MyMailer will be asynchronous.

# Queues the mail to be sent asynchronously by sidekiq

The default queue used by Sidekiq::Mailer is 'mailer'. So, in order to send mails with sidekiq you need to start a worker using:

sidekiq -q mailer

If you want to skip sidekiq you should use the 'deliver!' method:

# Mail will skip sidekiq and will be sent synchronously

By default Sidekiq::Mailer will retry to send an email if it failed. But you can override sidekiq options in your mailer.


Add this line to your application's Gemfile:

gem 'sidekiq_mailer'

And then execute:

$ bundle

Or install it yourself as:

$ gem install sidekiq_mailer


Delayed e-mails is an awesome thing in production environments, but for e-mail specs/tests in testing environments it can be a mess causing specs/tests to fail because the e-mail haven't been sent directly. Therefore you can configure what environments that should be excluded like so:

# config/initializers/sidekiq_mailer.rb
Sidekiq::Mailer.excluded_environments = [:test, :cucumber]


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