我可以根据环境为ActionMailer电子邮件指定不同的收件人吗?

时间:2009-10-06 15:47:45

标签: ruby-on-rails actionmailer

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

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:7)

mail_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

答案 1 :(得分: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

答案 2 :(得分:0)

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