【发布时间】:2011-01-27 13:20:18
【问题描述】:
谷歌搜索无济于事。也没有在 API 中找到任何东西。我期待某种类方法或配置选项来设置它...
所以,与其调用
from "my@email.com"
每个方法都可以自动调用。
【问题讨论】:
标签: ruby-on-rails actionmailer
谷歌搜索无济于事。也没有在 API 中找到任何东西。我期待某种类方法或配置选项来设置它...
所以,与其调用
from "my@email.com"
每个方法都可以自动调用。
【问题讨论】:
标签: ruby-on-rails actionmailer
config/environments/development.rb:
ActionMailer::Base.default :from => 'default@development-server.com'
config/environments/production.rb:
ActionMailer::Base.default :from => 'default@production-server.com'
您也可以为每个邮件设置此设置:
class MyMailer < ActionMailer::Base
default :from => 'default@myapp.com'
end
默认情况下不支持此功能。但是您可以通过使用action_mailer_callbacks 插件来实现此功能。本质上,此插件允许您为 deliver 方法添加 before 和 after 过滤器。
class FooMailer < ActionMailer::Base
before_deliver do |mail|
mail.from = "abc@xyz.com"
end
end
参考:
1) Article 讨论插件。
您可以猴子修补ActionMailer::Base 的from 方法。
将以下代码添加到您的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
现在您可以按如下方式配置默认值:
config/environments/development.rb:
ActionMailer::Base.default = {:from => 'default@development-server.com'}
config/environments/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"
}
【讨论】:
default_options= 已作为 ActionMailer::Base.default 的别名添加到 Rails 4 中。但在 Rails 3.2.12 中它不可用。
在 Rails 3 中:
config/environments/development.rb:
ActionMailer::Base.default :from => 'default@development-server.com'
config/environments/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
【讨论】:
红宝石 5 和 6
配置/环境/$RAILS_ENV.rb
config.action_mailer.default_options = {来自:'no-reply@example.com'}
【讨论】:
.. rails-6 有变化吗?
config.action_mailer.default_options = { from: 'noreply@xxx.xx' }
在生产中不工作.rb
【讨论】: