How to send SMTP emails in background

you've got at least two choices:

1) send your mail in a background process using backgroundrb
2) use ar_mailer (

backgroundrb requires you to run a separate backgroundrb process,
ar_mailer requires you to set up another database table for queueing
the mail, and then running a cron job at a specified interval to send
all the queued mail


Another choice is to use the Ruby Thread. You can read up on it here

I've had great success using it with all my background processing tasks. I just haven't found a
situation where I needed backgroundrb, yet.

-- Long - store, play, share

In my case i used the Thread method.
In this example i use msmtp, and send my email via GMail.

In environment.rb

ActionMailer::Base.delivery_method = :msmtp

module ActionMailer
  class Base
    def perform_delivery_msmtp(mail)
      thread = do
        IO.popen("/usr/bin/msmtp -t -C /etc/.msmtprc -a gmail --",
"w") do
          sm.puts(mail.encoded.gsub(/\r/, ''))