Mon Ruby on Rails action mailer fonctionne bien dans un environnement de développement, mais dans un environnement de production, il continue de lancer:
ActionView::Template::Error: Missing Host to link to! Please provide the :Host parameter, set default_url_options[:Host], or set :only_path to true
Ma configuration de développement est
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' }
Ma configuration de production est
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' }
Mes autres environnements sont:
Ruby 2.1.1
Rails 4.0.3
sidekiq
devise
devise-async
J'ai essayé:
Ajoutez ce qui suit dans un fichier d'initialisation
ActionMailer::Base.default_url_options[:Host] = "example.com"
Cette réponse ici
Aucun d'eux ne fonctionne.
Au final, j'ai ajouté ce qui suit avec la valeur correcte à chaque fichier d'environnement:
test.rb/ development.rb/ production.rb
Conception 3.2.x - 4.x.x
Rails 4.1.x && Rails 4.2.x && Rails 5.xx
Merci à maudulus
# Default Mailer Host
Rails.application.routes.default_url_options[:Host] = 'domain.com'
Essayez de redémarrer le serveur. Même dans Rails 4.1 la config n'est pas ré-analysée sans redémarrage.