是否有一种简单的方法可以告诉 Devise 通过以下方式发送所有电子邮件
延迟工作?
最佳答案
或者,不使用 Delayed::Mailer gem,您可以很容易地实现和使用您自己的 ActionMailer “传递方法”,一种...
按照以下方式做一些事情:
# 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
你需要实现的 Delayed::Job 那么......
email = ::Email.find_by_id(email_id)
Mail::Message.new(email.message).deliver
就是这样......希望这有帮助!
关于ruby-on-rails - 从设备发送延迟电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3736626/