Alternatively, instead of using the Delayed::Mailer gem, you can quite easily implement and use your own ActionMailer "delivery method", one that...
Do something along the lines of:
# in config/application.rb ActionMailer::Base.add_delivery_method :queued, Mail::QueuedDelivery # in config/environment.rb (or one of the config/environments/*.rb files) config.action_mailer.delivery_method = :queued # ie. Mail::QueuedDelivery # in lib/mail/queued_delivery.rb module Mail class QueuedDelivery def initialize(values = {}) # (optional) end def deliver!(mail) email = Email.create!(:delivery_handler => mail.delivery_handler.name, :message => mail.to_s) Delayed::Job.enqueue Jobs::Email::DeliverEmail.new(email.id) end end # class QueueDelivery end # module Mail
The Delayed::Job you need to implement would then...
email = ::Email.find_by_id(email_id)
Mail::Message.new(email.message).deliver