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...
So, rather than calling
from "[email protected]"
for every method, it could be called automatically.
config/environments/development.rb:
ActionMailer::Base.default :from => '[email protected]'
config/environments/production.rb:
ActionMailer::Base.default :from => '[email protected]'
You can also set this per mailer:
class MyMailer < ActionMailer::Base
default :from => '[email protected]'
end
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 = "[email protected]"
end
end
Reference:
1) Article discussing the plugin.
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 => '[email protected]'}
config/environments/production.rb:
ActionMailer::Base.default = {:from => '[email protected]'}
You can also set this per mailer:
class MyMailer < ActionMailer::Base
self.default = {:from => '[email protected]'}
end