web-dev-qa-db-fra.com

ArgumentError: une adresse SMTP To est requise pour envoyer un message. Définissez le message smtp_envelope_to, to, cc ou bcc address

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"

25
bulleric

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.

27
Miotsu

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.

5
cool_php

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.

2
carp