ActionMailer:默认来自:地址?

用谷歌搜索无济于事。 在API中也找不到任何东西。 我期待某种类方法或配置选项来设置它…

所以,而不是打电话

from "my@email.com" 

对于每种方法,都可以自动调用。

Rails 3

配置/环境/ development.rb:

 ActionMailer::Base.default :from => 'default@development-server.com' 

配置/环境/ production.rb:

 ActionMailer::Base.default :from => 'default@production-server.com' 

您还可以为每个邮件设置:

 class MyMailer < ActionMailer::Base default :from => 'default@myapp.com' end 

Rails 2

默认情况下不支持此function。 但是您可以使用action_mailer_callbacks插件来实现此function。 本质上,此插件允许您为deliver方法添加beforefilter。

 class FooMailer < ActionMailer::Base before_deliver do |mail| mail.from = "abc@xyz.com" end end 

参考:

1)讨论插件的文章。

要么

你可以修补ActionMailer::Basefrom方法。

将以下代码添加到config\initializers\mail.rb

 class ActionMailer::Base class_inheritable_hash :default def from_with_default(input=nil) return from_without_default(input) || default[:from] if input.nil? from_without_default(input) end alias_method_chain :from, :default end 

现在,您可以按如下方式配置默认值:

配置/环境/ development.rb:

 ActionMailer::Base.default = {:from => 'default@development-server.com'} 

配置/环境/ production.rb:

 ActionMailer::Base.default = {:from => 'default@production-server.com'} 

您还可以为每个邮件设置:

 class MyMailer < ActionMailer::Base self.default = {:from => 'default@myapp.com'} end 

在Rails 4中,您可以在您的环境中进行设置:

 config.action_mailer.default_options = { :from => "foo@bar.com" } 

在Rails 3中:

配置/环境/ development.rb:

 ActionMailer::Base.default :from => 'default@development-server.com' 

配置/环境/ production.rb:

 ActionMailer::Base.default :from => 'default@production-server.com' 

我选择了KandadaBoggu建议的猴子修补方法。 但是,它在Rails 2.3.8中不能正常工作; 你无法覆盖默认值。 但是,这有效:

 def from_with_default(input=nil) return instance_variable_set("@from", input) unless input.nil? from_without_default || FROM_EMAIL end alias_method_chain :from, :default