用Google搜索无效。在API中也没有找到任何东西。我期待某种类方法或配置选项来设置它......
所以,而不是打电话
from "my@email.com"
对于每种方法,都可以自动调用。
答案 0 :(得分:53)
配置/环境/ 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
默认情况下不支持此功能。但是您可以使用action_mailer_callbacks插件来实现此功能。基本上,此插件允许您为before
方法添加after
和deliver
过滤器。
class FooMailer < ActionMailer::Base
before_deliver do |mail|
mail.from = "abc@xyz.com"
end
end
<强>参考:强>
1)Article讨论插件。
您可以修补from
的{{1}}方法。
将以下代码添加到ActionMailer::Base
config\initializers\mail.rb
现在您可以按如下方式配置默认值:
配置/环境/ development.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
配置/环境/ production.rb:
ActionMailer::Base.default = {:from => 'default@development-server.com'}
您还可以为每封邮件设置:
ActionMailer::Base.default = {:from => 'default@production-server.com'}
答案 1 :(得分:23)
在Rails 4中,您可以在您的环境中设置:
config.action_mailer.default_options = {
:from => "foo@bar.com"
}
答案 2 :(得分:11)
在Rails 3中:
配置/环境/ development.rb:
ActionMailer::Base.default :from => 'default@development-server.com'
配置/环境/ production.rb:
ActionMailer::Base.default :from => 'default@production-server.com'
答案 3 :(得分:0)
我选择了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
答案 4 :(得分:0)
.. Rails-6有变化吗?
config.action_mailer.default_options = { from: 'noreply@xxx.xx' }
在production.rb中不起作用
答案 5 :(得分:0)
Ruby 5和6
config / environments / $ RAILS_ENV.rb
config.action_mailer.default_options = {来自:“ no-reply@example.com”}