Ale*_*dre 17 ruby-on-rails actionmailer
用谷歌搜索无济于事.在API中也没有找到任何东西.我期待某种类方法或配置选项来设置它...
所以,而不是打电话
from "my@email.com"
Run Code Online (Sandbox Code Playgroud)
对于每种方法,都可以自动调用.
Har*_*tty 53
配置/环境/ development.rb:
ActionMailer::Base.default :from => 'default@development-server.com'
Run Code Online (Sandbox Code Playgroud)
配置/环境/ production.rb:
ActionMailer::Base.default :from => 'default@production-server.com'
Run Code Online (Sandbox Code Playgroud)
您还可以为每个邮件设置:
class MyMailer < ActionMailer::Base
default :from => 'default@myapp.com'
end
Run Code Online (Sandbox Code Playgroud)
默认情况下不支持此功能.但是您可以使用action_mailer_callbacks插件来实现此功能.本质上,这个插件允许您为方法添加before和after过滤deliver.
class FooMailer < ActionMailer::Base
before_deliver do |mail|
mail.from = "abc@xyz.com"
end
end
Run Code Online (Sandbox Code Playgroud)
参考:
1)条在讨论插件.
你可以修补from方法ActionMailer::Base.
将以下代码添加到您的 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
Run Code Online (Sandbox Code Playgroud)
现在,您可以按如下方式配置默认值:
配置/环境/ development.rb:
ActionMailer::Base.default = {:from => 'default@development-server.com'}
Run Code Online (Sandbox Code Playgroud)
配置/环境/ production.rb:
ActionMailer::Base.default = {:from => 'default@production-server.com'}
Run Code Online (Sandbox Code Playgroud)
您还可以为每个邮件设置:
class MyMailer < ActionMailer::Base
self.default = {:from => 'default@myapp.com'}
end
Run Code Online (Sandbox Code Playgroud)
Jak*_*ake 23
在Rails 4中,您可以在您的环境中设置:
config.action_mailer.default_options = {
:from => "foo@bar.com"
}
Run Code Online (Sandbox Code Playgroud)
Vin*_*ent 11
在Rails 3中:
配置/环境/ development.rb:
ActionMailer::Base.default :from => 'default@development-server.com'
Run Code Online (Sandbox Code Playgroud)
配置/环境/ production.rb:
ActionMailer::Base.default :from => 'default@production-server.com'
Run Code Online (Sandbox Code Playgroud)