通过电子邮件发送ActionMailer中的当前用户 - Rails 5
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过电子邮件发送ActionMailer中的当前用户 - Rails 5相关的知识,希望对你有一定的参考价值。
我有一个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进行身份验证。
我看到的唯一方法是将当前用户添加到某个全局变量,然后您就可以从Interceptor访问它。这是一个选项:https://stackoverflow.com/a/2513456/740394
要将您想要的任何信息添加到邮件程序,请使用布局中具有条件的部分,就像您对拦截器所做的那样。
render('sender_info') if Rails.env.staging?
以上是关于通过电子邮件发送ActionMailer中的当前用户 - Rails 5的主要内容,如果未能解决你的问题,请参考以下文章
使用 ActionMailer 在 Rails 中发送给多个收件人
ActionMailer在测试模式下发送真实的电子邮件! - 如何关闭?