with rails for ruby-on-rails sendmail

ruby on rails - rails - Enviar correo electrónico desde la consola de rieles.



sendgrid with actionmailer (4)

Me encontré con un problema similar esta mañana en una aplicación de Rails 3 a la que llamé:

UserMailer.activation_instructions(@user)

Esto me dio los datos pero no envió el correo electrónico. Para enviar, llamé:

UserMailer.activation_instructions(@user).deliver

Esto hizo el truco. ¡Ojalá esto también te funcione!

Estoy intentando enviar algunos correos desde la consola de mi servidor de producción, y no se van a salir. No puedo entender por qué. Acabo de tener su configuración estándar de correo electrónico con sendmail. Cuando llamo al método Mailer.deliver_, recupero esto:

#<TMail::Mail port=#<TMail::StringPort:id=0x3fe1c205dbcc> bodyport=#<TMail::StringPort:id=0x3fe1c2059e00>>

EDITAR: Añadido un poco más de información:

Entonces, por ejemplo, tengo esta línea en mi controlador cuando un nuevo usuario se registra, para enviarles un correo electrónico de "bienvenida":

Mailer.deliver_signup(@user, request.host_with_port, params[:user][:password])

Esto funciona bien. Pensé que debería poder hacer lo mismo desde la consola, por ejemplo

user = User.find(1) Mailer.deliver_signup(user, "mydomainname.com", "password")

Cuando hago esto, recupero el objeto Tmail :: StringPort, pero parece que el correo no se envía (estoy intentando enviarme correos electrónicos para probar esto).

Estoy en un servidor de Ubuntu en caso de que ayude. gracias - max


No estoy al 100% si entiendo lo que estás tratando de hacer.

Si intenta enviar correos electrónicos a Internet, su sendmail debe configurarse de manera que los envíe al servidor de correo electrónico adecuado. Dependiendo de la versión de Ubuntu que use, puede simplemente reconfigurar el paquete para hacer esto.

También puedes pensar si quieres usar procmail en lugar de sendmail.

Puede reconfigurar la configuración de correo electrónico con

dpkg-reconfigure sendmail

de usar procmail en su lugar si usas ese paquete. El diálogo de configuración le brinda una opción donde puede configurarlo para reenviar todo el correo al servidor de correo electrónico apropiado. Sin embargo, debe pensar si necesita autenticación o si ese servidor solo acepta correos electrónicos de su servidor.


Para enviar un correo electrónico desde la consola Rails primero, tenemos que ejecutar esta configuración en la consola para la configuración del correo de acción.

ActionMailer::Base.delivery_method = :smtp ActionMailer::Base.smtp_settings = { address: ''smtp.gmail.com'', port: 587, domain: ''gmail.com'', authentication: ''plain'', enable_starttls_auto: true, user_name: ''[email protected]'', password: ''yourpassword'' }

Después de eso, si ejecutamos un correo electrónico, enviaremos un correo electrónico.

UserMailer.activation_instructions(@user).deliver_now