This gem makes it very easy to send emails asynchronously with Resque.
Add the gem to your gemfile:
gem 'resque_mail_queue'
Then anytime you want to push an email asynchronously add enqueue before the mailer method.
UserMailer.enqueue.welcome_email(1)
-
As with most things Resque, your parameters should be simple objects (ids, strings, etc). Or put another way, do not pass your models directly.
-
You do not have to call deliver
-
By default, all messages will be placed on a queue called "mail". You can change this by adding a class method called queue on any mailer.
class MyMailer < ActionMailer::Base
def self.queue :high_priority end
end
I initially started using ResqueMailer and it worked well. However, I preferred being more explicit (and simple) on when emails were sent asynchronously (by calling enqueue).
More clearly, if ResqueMailer works for you and you like it, stick with it.
Provided under the Do Whatever You Want With This Code License.