【发布时间】:2019-02-15 01:07:05
【问题描述】:
我有一个 Ruby on Rails 应用程序,它具有多种环境(开发、登台、生产)。在我的暂存环境中,我希望能够覆盖从系统发送的所有电子邮件以转到登录的 current_user。我所读到的所有内容都告诉我,我必须继续将 current_user 传递到我的邮件程序中。但是,这对我来说似乎不合逻辑,因为有数百个邮件程序代码需要更改。
我最理想的做法是设置一个电子邮件拦截器,覆盖 mail.to 并始终发送给 current_user。有没有办法做到这一点?到目前为止,这是我在初始化程序中的内容:
if Rails.env.staging?
class OverrideMailRecipient
def self.delivering_email(mail)
mail.to = ['development@xxx.com']
end
end
ActionMailer::Base.register_interceptor(OverrideMailRecipient)
end
这可行,但现在我想让它发送给当前用户,而不是硬编码的电子邮件。
作为奖励,我想在电子邮件正文中添加电子邮件的原始收件人,以便当前用户知道谁应该在生产中接收它。
我希望这是有道理的,感谢任何帮助! :)
我正在使用 Rails 5.1.4 和 Devise 进行身份验证。
【问题讨论】:
标签: ruby-on-rails devise actionmailer