2009-12-21 11 views
8

He estado aprendiendo a utilizar Rails en los últimos días y he encontrado algo que no he podido resolver con Google.Problemas de Rails ActionMailer en Mac

Así que solo estoy creando un formulario de contacto básico que envía un correo electrónico. Todo parece estar funcionando bien en las pruebas, lo que me dice que el formulario está funcionando, y ActionMailer se implementó correctamente, sin embargo, tengo problemas para configurar ActionMailer. Estoy ejecutando OSX 10.6.2. Tengo postfix ejecutándose y he verificado que se está ejecutando usando telnet localhost 25. Cuando intento utilizar el formulario, aparece un error de "Conexión rechazada".

Esta es mi configuración actual:

config.action_mailer.smtp_settings = { 
    :address => 'localhost', 
    :port  => 25 
} 

pensé que podría necesitar para establecer :domain, pero estoy un poco confundido sobre lo que se debe establecer en esta situación.

Respuesta

6

Mi vida ha sido aproximadamente 100 veces más fácil de ejecutar: sendmail en mi mac como método de entrega en mi mac en lugar de: smtp, es posible que desee intentar dar una oportunidad. En esta respuesta, supongo que solo desea la entrega de correo en su Mac y realmente no le importa cómo funciona.

La otra cosa que hago, si voy a estar conectado a la red todo el tiempo en un proyecto, es configurar mi correo saliente originado en ActionMailer para pasar por gmail en lugar de mi mac local.

 
ActionMailer::Base.delivery_method = :smtp 

ActionMailer::Base.smtp_settings = { 
:enable_starttls_auto => true, 
    :address  => "smtp.gmail.com", 
    :port   => 587, 
    :domain   => "example.com", 
    :authentication => :plain, 
    :user_name => "[email protected]", 
    :password => "secret" 
}

Esto es para un dominio personalizado llamado example.com que está configurado en las aplicaciones de Google para dominios. También puede simplemente crear una cuenta de Gmail y enviar cosas allí. (Al cambiar todas las instancias de example.com a gmail.com)

0

¿Funciona si sustituye 'localhost' por '127.0.0.1' para ver si esto es un problema de IPv4 contra IPv6 o un problema con su resolver?

+0

Hm, eso tampoco funcionó. – seth

+0

Si la salida de "netstat -na | grep LISTEN" muestra "tcp4 0 0 * .25 *. * LISTEN", entonces debería estar recibiendo una conexión. Si muestra ":: 1.25", es posible que esté en modo IPv6. Si tiene algún tipo de firewall local, incluyendo Little Snitch, esto también podría estar bloqueando sus llamadas. La única manera de saberlo con certeza es intentar una conexión de Ruby directamente, como a través de una prueba unitaria. – tadman

6

Debe iniciar el daemon postfix. Puede saber si su puerto está abierto escribiendo en un terminal

telnet localhost 25 

que intentará conectarse al puerto 25. No se conectará si postfix no se está ejecutando, si lo hace, presione ctl-] para detener la conexión y 'salir' para salir de telnet.

Si no se conecta, es necesario iniciar el demonio postfix:

sudo launchctl start org.postfix.master 

y luego tratar de conectar con telnet. debería conectarse. Ahora está listo para enviar correos electrónicos desde su clase de ActionMailer.

sudo launchctl stop org.postfix.master 

detiene el demonio postfix

1

Seguí this guide y todo funciona correctamente. Principalmente:

sudo postfix start 

continuación

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    :address => "localhost", 
    :port => 25 
} 
0

Otra gran manera de enviar correos y verificar que el desarrollo está utilizando enter link description here.

Presupuesto de su página web:

MailCatcher dirige un súper simple servidor SMTP que atrapa cualquier mensaje enviado a él para mostrar en una interfaz web. Ejecute mailcatcher, configure su aplicación favorita para enviar a smtp://localhost:1025 en lugar de su servidor SMTP predeterminado, luego consulte http://localhost:1080 para ver el correo que ha llegado hasta el momento.

Se intercepta el correo a todos los destinatarios y, por lo tanto, hace que sea muy fácil verificar todos los correos en un solo lugar.

Cuestiones relacionadas