从设备发送延迟的电子邮件 [英] Sending delayed email from devise
本文介绍了从设备发送延迟的电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否有一种简单的方法可以告诉 Devise 通过以下方式发送所有电子邮件延迟工作?
Is there a simple way of telling Devise to send all email via delayed_job?
推荐答案
或者,您可以非常轻松地实现和使用您自己的 ActionMailer交付方法",而不是使用 Delayed::Mailer gem,该方法...
Alternatively, instead of using the Delayed::Mailer gem, you can quite easily implement and use your own ActionMailer "delivery method", one that...
- 拦截来自 ActionMailer 的邮件发送
- 将电子邮件存储在表格中(可选)
- 创建一个 Delayed::Job 引用存储的电子邮件
- 在执行延迟作业时发送存储的电子邮件
按照以下方式做一些事情:
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
您需要实施的 Delayed::Job 那么...
The Delayed::Job you need to implement would then...
- 从数据库中检索存储的电子邮件 --
email = ::Email.find_by_id(email_id)
- 通过邮件 gem 发送电子邮件 --
Mail::Message.new(email.message).deliver
就是这样……希望对您有所帮助!
That's it... hope this help!
这篇关于从设备发送延迟的电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文