ArgumentError: SMTP Que se requiere una dirección para enviar un mensaje. Establecer la envolvente smtp del mensaje en, a, cc o dirección cco


Tengo una aplicación rails 4 con la siguiente configuración de correo:

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"
  }

Cada vez que intento enviar un correo con una configuración de prueba de correo:

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

Tengo esta excepción:

Argumententror: Se requiere una dirección SMTP To para enviar un mensaje. Establecer el mensaje smtp_envelope_to, to, cc, or bcc address.

Es posible que me olvide de algo para establecer.? Y no puedo encontrar una opción de configuración para"smtp_envelope_to"

Author: bulleric, 2013-08-24

3 answers

El mensaje de error no es sobre el sobre SMTP, sino sobre el remitente:

Se requiere una dirección SMTP To para enviar un mensaje

El resto es solo un mensaje genérico. Algo en su [email protected] no está funcionando. ¿Usas una dirección de trabajo real? Si no, prueba con uno.

 26
Author: Miotsu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-27 09:39:35

Si utiliza sidekiq+actionmailer. Tenga cuidado, al enviar correo electrónico usando hash. Estaba haciendo algo como esto. Mi trabajadora.perform_async ("var1", {email: '[email protected]", var2: "test1234"})

Me golpeé la cabeza durante un par de horas, por qué está lanzando el error anterior. Porque en el hash perform_menthod [: email] es nil. Es necesario utilizar hash ["email"] para recibir el correo electrónico. No sé, la razón. Pero me ayudó a deshacerme de este error.

 4
Author: cool_php,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-22 08:36:15

Es :to => '[email protected]' cómo es en su entorno fallido? Si no es una dirección de correo electrónico codificada, asegúrese de que una variable que contenga la dirección to no esté en blanco.

No es necesario establecer Mail::Message#smtp_envelope_to explícitamente. Se puede adivinar a partir de sus destinatarios, es decir. Mail::Message#destinations (to + cc + bcc), pero no parece tener ninguno.

 2
Author: carp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-04 14:28:04