Way*_*ina 2 ruby-on-rails actionmailer
我想知道是否可以配置从ActionMailer派生的Rails电子邮件,以根据环境发送给不同的收件人.例如,对于开发我希望它发送邮件到我的个人电子邮件,所以我不会用"测试"电子邮件堵塞我们公司的电子邮件帐户; 但是我希望它能使用真实的地址.
我怎样才能做到这一点?
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
默认情况下,开发环境未设置为实际发送电子邮件(它只记录它们).
设置备用帐户可以通过多种不同方式完成.您可以在邮件程序中使用某些逻辑,如此...
recipients (Rails.env.production? ? "email@company.com" : "test@non-company.org")
Run Code Online (Sandbox Code Playgroud)
或者您可以将收件人定义为环境文件中的常量,如下所示:
/config/environment/production.rb
EMAIL_RECIPIENT = "email@company.com"
Run Code Online (Sandbox Code Playgroud)
/config/environment/development.rb
EMAIL_RECIPIENT = "test@non-company.org"
Run Code Online (Sandbox Code Playgroud)
然后在邮件程序中使用常量.例:
recipients EMAIL_RECIPIENT
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
826 次 |
| 最近记录: |