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.
Action Mailer allows you to send emails from your application using mailer classes and views.
Action Mailer allows you to send emails from your application using a mailer model and views. So, in Rails, emails are used by creating mailers that inherit from ActionMailer::Base and live in app/mailers. Those mailers have associated views that appear alongside controller views in app/views.
rails generates a mail preview if you use rails g mailer CustomMailer . You will get a file CustomMailerPreview inside spec/mailers/previews folder. Here you can write your method that will call the mailer and it'll generate a preview.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With