gpt4 book ai didi

ruby-on-rails - 从设备发送延迟电子邮件

转载 作者:行者123 更新时间:2023-12-04 10:02:12 28 4
gpt4 key购买 nike

是否有一种简单的方法可以告诉 Devise 通过以下方式发送所有电子邮件
延迟工作?

最佳答案

或者,不使用 Delayed::Mailer gem,您可以很容易地实现和使用您自己的 ActionMailer “传递方法”,一种...

  • 拦截来自 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

    你需要实现的 Delayed::Job 那么......
  • 从数据库中检索存储的电子邮件 -- email = ::Email.find_by_id(email_id)
  • 通过邮件 gem 发送电子邮件 -- Mail::Message.new(email.message).deliver

  • 就是这样......希望这有帮助!

    关于ruby-on-rails - 从设备发送延迟电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3736626/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com