2012-07-06 15 views
22

Estoy tratando de enviar correos electrónicos en una aplicación de Rails. Funciona si uso Gmail, pero no funciona si uso Mandrill. Estoy obteniendo este error de tiempo de espera con Mandrill. No estoy seguro de lo que estoy haciendo mal. Con Gmail y Mandrill estoy configurando el nombre de usuario y la contraseña/api_key usando variables de entorno. La única diferencia entre las dos configuraciones es lo que ve a continuación. ¿Algunas ideas?No se puede obtener Mandrill para enviar correos electrónicos desde la aplicación Rails

Timeout::Error in RegistrationsController#create 

execution expired 
Rails.root: /Users/michaeljohnmitchell/Sites/pre 

Application Trace | Framework Trace | Full Trace 
app/models/user.rb:38:in `send_welcome_email' 

Mandril No funciona

config.action_mailer.smtp_settings = { 
    :address => "smtp.mandrillapp.com", 
    :port  => 25, 
    :user_name => ENV["MANDRILL_USERNAME"], 
    :password => ENV["MANDRILL_API_KEY"] 
} 

Gmail funciona

config.action_mailer.smtp_settings = { 
    address: "smtp.gmail.com", 
    port: 587, 
authentication: "plain", 
    enable_starttls_auto: true, 
    user_name: ENV["GMAIL_USERNAME"], 
    password: ENV["GMAIL_PASSWORD"] 
} 

Respuesta

37

puerto 587 para uso mandril , me pasó lo mismo :)

esto se debe a que el puerto 25 está enviando texto sin formato y el puerto 587 envía correos electrónicos con codificación SSL (que creo que es la idea general del mandrill).

No tengo idea de por qué lo configuraron en el puerto 25 en sus ejemplos.

+1

. Tuve un problema similar en el que algunos correos electrónicos se estaban apagando y otros fallaban debido a Net :: OpenTimeout. Cambiar al puerto 587 corrige esto. ¿Tal vez todos y su madre están usando 25 por lo que es demasiado tráfico en ese puerto? – idrinkpabst

0

Aquí están algunas cosas que usted puede probar en base a la información que ya ha proporcionado:

  1. asegúrese de que la información correcta esté en eac h de sus archivos de entorno (production.rb y development.rb)

  2. tratar hardcoding el nombre de usuario y la contraseña de mandril en lugar de utilizar las variables ambientales (para la prueba única)

+1

hardcoding un nombre de usuario y contraseña nunca es una buena idea –

+1

codificación dura se puede utilizar para probar si tiene problemas con las variables ambientales. –

+1

Puede ser una gran idea durante la prueba de su entorno de desarrollo. Lo que probablemente significará Naoise Golden es que SIEMPRE debe tener mucho cuidado de no realizar ningún cambio en git durante las pruebas para no exponer su nombre de usuario o contraseñas. – SoEzPz

Cuestiones relacionadas