J'ai reçu une application Rails 4 avec la configuration de messagerie suivante:
config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { Host: 'myhost.com' }
config.action_mailer.perform_deliveries = true
config.action_mailer.smtp_settings = {
:enable_starttls_auto => true,
:address => 'smtp.myhost.com',
:port => 587,
:domain => 'myhost.com',
:authentication => :login,
:enable_starttls_auto => false,
:tls => false,
:openssl_verify_mode => 'none',
:ssl => false,
:user_name => "myusername",
:password => "mypassword"
}
Chaque fois que j'essaie d'envoyer un mail avec une configuration de mailing test:
class TestMailer < ActionMailer::Base
default :from => "[email protected]"
def welcome_email
mail(:to => "[email protected]", :subject => "Test mail", :body => "Test mail body")
end
end
TestMailer.welcome_email.deliver
J'ai eu cette exception:
ArgumentError: une adresse SMTP To est requise pour envoyer un message. Définissez le message smtp_envelope_to, à, cc ou bcc.
Est-il possible que j'oublie quelque chose à régler.? Et je ne trouve pas d'option de configuration pour "smtp_envelope_to"
Le message d'erreur ne concerne pas l'enveloppe SMTP, mais l'expéditeur:
Une adresse SMTP To est requise pour envoyer un message
le reste n'est qu'un message générique. Quelque chose dans votre [email protected]
ne fonctionne pas. Utilisez-vous une véritable adresse de travail? Sinon, essayez avec un.
Si vous utilisez sidekiq + actionmailer. Soyez prudent lorsque vous envoyez un e-mail à l'aide du hachage. Je faisais quelque chose comme ceci MyWorker.perform_async ("var1", {email: '[email protected]', var2: 'test1234'})
Je me suis cogné la tête pendant quelques heures, pourquoi cela lance l'erreur ci-dessus. Parce que dans le hash perform_menthod [: email] est nul. Vous devez utiliser le hachage ["e-mail"] pour recevoir l'e-mail. Je ne sais pas, la raison. Mais cela m'a aidé à me débarrasser de cette erreur.
Est :to => '[email protected]'
comment ça se passe dans votre environnement défaillant? S'il ne s'agit pas d'une adresse e-mail codée en dur, assurez-vous qu'une variable contenant l'adresse de destination n'est pas vide.
Vous n'avez pas besoin de définir Mail::Message#smtp_envelope_to
explicitement. Il peut le deviner à partir de ses destinataires, c'est-à-dire. Mail::Message#destinations
(à + cc + bcc), mais il ne semble pas en avoir.