加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 从设计发送延迟的电子邮件

发布时间:2020-12-17 04:26:44 所属栏目:百科 来源:网络整理
导读:有没有一种简单的方法告诉Devise发送所有电子邮件 delayed_job的? 解决方法 或者,您可以非常轻松地实现和使用自己的ActionMailer“交付方法”,而不是使用Delayed :: Mailer gem. 拦截来自ActionMailer的邮件传递 将电子邮件存储在表格中(可选) 创建一个引用
有没有一种简单的方法告诉Devise发送所有电子邮件
delayed_job的?

解决方法

或者,您可以非常轻松地实现和使用自己的ActionMailer“交付方法”,而不是使用Delayed :: Mailer gem.

>拦截来自ActionMailer的邮件传递
>将电子邮件存储在表格中(可选)
>创建一个引用存储的电子邮件的Delayed :: Job
>执行延迟作业时传送存储的电子邮件

做一些事情:

# 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

那么你需要实施的延迟::工作……

>从数据库中检索存储的电子邮件 – email = :: Email.find_by_id(email_id)
>通过邮件gem发送电子邮件 – Mail :: Message.new(email.message).deliver

就是这样……希望这有帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读