Ruby on rails 我是否可以根据环境为ActionMailer电子邮件指定其他收件人?

Ruby on rails 我是否可以根据环境为ActionMailer电子邮件指定其他收件人?,ruby-on-rails,actionmailer,Ruby On Rails,Actionmailer,我想知道是否可以根据环境配置从ActionMailer派生的Rails电子邮件以发送给其他收件人。例如,对于开发,我希望它能将邮件发送到我的个人电子邮件,这样我就不会用“测试”电子邮件阻塞我们公司的电子邮件帐户;对于生产,但我希望它使用真实的地址 如何实现这一点?默认情况下,开发环境没有设置为实际发送电子邮件(它只是记录电子邮件) 设置备用帐户可以通过许多不同的方式完成。你可以在邮件中使用一些逻辑,比如 recipients (Rails.env.production? ? "email@com

我想知道是否可以根据环境配置从ActionMailer派生的Rails电子邮件以发送给其他收件人。例如,对于开发,我希望它能将邮件发送到我的个人电子邮件,这样我就不会用“测试”电子邮件阻塞我们公司的电子邮件帐户;对于生产,但我希望它使用真实的地址


如何实现这一点?

默认情况下,开发环境没有设置为实际发送电子邮件(它只是记录电子邮件)

设置备用帐户可以通过许多不同的方式完成。你可以在邮件中使用一些逻辑,比如

recipients (Rails.env.production? ? "email@company.com" : "test@non-company.org")
也可以在环境文件中将收件人定义为常量,如下所示:

/config/environment/production.rb

EMAIL_RECIPIENT = "email@company.com"
/config/environment/development.rb

EMAIL_RECIPIENT = "test@non-company.org"
然后使用邮件中的常量。例如:

recipients EMAIL_RECIPIENT

还有一些插件可以实现这一点。在我查看的三个插件中,我发现最好的一个是。

mail\u-safe插件可能有点杀伤力过大。 一个简单的初始化器就可以了

Rails 2.x

if Rails.env == 'development'
  class ActionMailer::Base
    def create_mail_with_overriding_recipients
      mail = create_mail_without_overriding_recipients
      mail.to = "mail@example.com"
      mail
    end
    alias_method_chain :create_mail, :overriding_recipients
  end
end
Rails 3.x

if Rails.env == 'development'

  class OverrideMailReciptient
    def self.delivering_email(mail)
      mail.to = "mail@example.com"
    end
  end

  ActionMailer::Base.register_interceptor(OverrideMailReciptient)
end

太好了,应该可以了。谢谢