2

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

我怎样才能做到这一点?

4

3 回答 3

7

mail_safe 插件可能有点过头了。一个简单的初始化程序就可以了

导轨 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

导轨 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
于 2010-10-29T13:38:05.220 回答
6

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

可以通过许多不同的方式设置备用帐户。您可以像这样在邮件中使用一些逻辑......

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
于 2009-10-06T16:34:48.680 回答
0

此外,有几个插件可以做到这一点。在我看过的三个中,我发现最好的一个是mail_safe

于 2010-05-07T21:48:05.080 回答