My ruby on rails action mailer runs all good in development environment, but in production environment, it keeps throw:
ActionView::Template::Error: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
My development config is
config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :port => xxx, :address => 'smtp.example.org', :user_name => '[email protected]', :password => 'xxxxxxxx', :domain => 'xxxxxx.com', :authentication => :plain, } config.action_mailer.default_url_options = { :host => 'localhost:3000' }
My production config is
config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :port => 587, :address => 'smtp.example.org', :user_name => '[email protected]', :password => 'xxxxxx', :domain => 'example.com', :authentication => :plain, } config.action_mailer.default_url_options = { :host => 'example.com' }
My other environments are:
ruby 2.1.1 rails 4.0.3 sidekiq devise devise-async
I have tried:
Add the following in a initializer file
ActionMailer::Base.default_url_options[:host] = "example.com"
This answer here
Neither of them works.
In the end I added the following with the correct value to each environment file:
test.rb / development.rb / production.rb
Devise 3.2.x - 4.x.x
Rails 4.1.x && Rails 4.2.x && Rails 5.x.x
Thanks to maudulus
# Default Mailer Host Rails.application.routes.default_url_options[:host] = 'domain.com'
Try restarting the server. Even in Rails 4.1 the config is not reparsed without a restart.
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