ruby on rails - rails - ArgumentError: se requiere una dirección SMTP To para enviar un mensaje. Establezca el mensaje smtp_envelope_to, to, cc o bcc address
sendgrid with actionmailer (3)
Obtuve 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 correo de prueba:
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:
ArgumentError: se requiere una dirección SMTP To para enviar un mensaje. Establezca el mensaje smtp_envelope_to, to, cc o bcc address.
¿Es posible que olvide algo para establecer? Y no puedo encontrar una opción de configuración para "smtp_envelope_to"
El mensaje de error no se trata del sobre SMTP, sino del remitente:
Se requiere una dirección SMTP A para enviar un mensaje
el resto es solo un mensaje genérico. Algo en su [email protected]
no funciona. ¿Usas una dirección real y funcional? Si no, prueba con uno.
Es :to => ''[email protected]''
¿cómo está en su entorno de falla? Si no es una dirección de correo electrónico codificada, asegúrese de que una variable que contiene la dirección no esté en blanco.
No tiene que establecer Mail::Message#smtp_envelope_to
explícitamente. Puede adivinarlo de sus destinatarios, es decir. Mail::Message#destinations
(to + cc + bcc), pero parece que no tiene ninguno.
Si usa sidekiq + actionmailer. Tenga cuidado al enviar correos electrónicos usando hash. Estaba haciendo algo como esto MyWorker.perform_async ("var1", {email: ''[email protected]'', var2: ''test1234''})
Me golpeé la cabeza por un par de horas, ¿por qué está arrojando el error anterior? Porque en el hash perform_menthod [: email] es nulo. Debe usar hash ["email"] para recibir el correo electrónico. No sé la razón. Pero me ayudó a deshacerme de este error.