Googled for this to no avail. Didn't find anything in the API either. I was expecting some kind of class method or configuration option to set it...
开发者_StackOverflowSo, rather than calling
from "my@email.com"
for every method, it could be called automatically.
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'
You can also set this per mailer:
class MyMailer < ActionMailer::Base
  default :from => 'default@myapp.com'
end
Rails 2
This is not supported by default. But you can achieve this functionality by using the action_mailer_callbacks plugin. Essentially this plugin allows you to add before and after filters for the deliver method.
class FooMailer < ActionMailer::Base
  before_deliver do |mail|
    mail.from = "abc@xyz.com"
  end
end
Reference:
1) Article discussing the plugin.
OR
You can monkey patch the from method of ActionMailer::Base.
Add the code below to your 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
Now you can configure your default value as follows:
config/environments/development.rb:
ActionMailer::Base.default = {:from => 'default@development-server.com'}
config/environments/production.rb:
ActionMailer::Base.default = {:from => 'default@production-server.com'}
You can also set this per mailer:
class MyMailer < ActionMailer::Base
  self.default = {:from => 'default@myapp.com'}
end
In Rails 4 you can set this in your environment(s):
config.action_mailer.default_options = {
  :from => "foo@bar.com"
}
In 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'
I went with the monkey-patching method that KandadaBoggu suggested. However, it does not work quite right in Rails 2.3.8; you can't override the default. This works, however:
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
Ruby 5 & 6
config/environments/$RAILS_ENV.rb
config.action_mailer.default_options = {from: 'no-reply@example.com'}
.. are there changes to rails-6?
config.action_mailer.default_options = { from: 'noreply@xxx.xx' }
is not working in production.rb
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论