Net :: SMTPAuthenticationError al enviar correo electrónico desde la aplicación Rails (en entorno de ensayo)

Estoy enviando un correo electrónico desde mi aplicación de Rails. Funciona bien en el entorno de desarrollo, pero falla en la puesta en escena. Obtuve el siguiente error:

Net::SMTPAuthenticationError (534-5.7.14 <https://accounts.google.com/ContinueSignIn?plt=AKgnsbtdF0yjrQccTO2D_6) 

Tenga en cuenta que no tengo un nombre de dominio para mi puesta en escena.

Aquí están mis configuraciones en staging.rb

 config.action_mailer.delivery_method = :smtp config.action_mailer.default_url_options = { :host => "my.ip.addr.here:80" } config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :domain => 'my.ip.addr.here:80' :user_name => "my_email_name@gmail.com", :password => "my_email_password", :authentication => 'login' } 

Por favor ayuda.

Editar.

Después de agregar :tls => true opción :tls => true que obtengo

 OpenSSL::SSL::SSLError (Unrecognized SSL message, plaintext connection?) 

Y luego cambié el puerto a 25 y ahora obtengo esto (con 30 segundos de retraso):

 Timeout::Error (execution expired) 

Tuve el mismo problema: los correos electrónicos se enviaban desde el desarrollo, pero no desde la producción (donde obtuve Net::SMTPAuthenticationError ). Esto me llevó a la conclusión de que el problema no estaba en la configuración de mi aplicación, sino en Google.

Motivo : Google bloqueaba el acceso desde una ubicación desconocida (aplicación en producción)

Solución : vaya a http://www.google.com/accounts/DisplayUnlockCaptcha y haga clic en continuar (esto le otorgará acceso durante 10 minutos para registrar nuevas aplicaciones). Después de esto, mi aplicación en producción comenzó a enviar correos electrónicos;)

Esta solución me funciona:

 config.action_mailer.delivery_method = :smtp config.action_mailer.default_url_options = { host:'localhost', port: '3000' } config.action_mailer.perform_deliveries = true config.action_mailer.raise_delivery_errors = true config.action_mailer.default :charset => "utf-8" config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :domain => 'localhost:3000', :user_name => "xyz@gmail.com", :password => "password", :authentication => :plain, :enable_starttls_auto => true } 

Es cierto que Google bloqueará su bash de inicio de sesión pero puede cambiar su configuración en https://www.google.com/settings/security/lesssecureapps para que su cuenta ya no esté protegida por los estándares de seguridad modernos.

Resuelto Simplemente cambié la contraseña de mi cuenta de Gmail y de alguna manera los errores desaparecieron.

Después de una docena de cambios, la configuración final con la que terminé son:

 config.action_mailer.delivery_method = :smtp config.action_mailer.default_url_options = { :host => "my.ip.addr.here" } config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :domain => 'my.ip.addr.here:80', :user_name => "my_email_name@gmail.com", :password => "my_email_password", :authentication => :plain, :enable_starttls_auto => true } 

La solución anterior proporcionó las configuraciones correctas (que ya tenía) pero no resolvió el problema. Después de los bashs continuos, seguí recibiendo el mismo error. Resulta que tuve que “borrar el CAPTCHA” de la web. Consulte la documentación de gmail para más detalles.

También puede ir directamente a la página “borrar el CAPTCHA” aquí .

Mucho más tarde, pero por si acaso ayuda a alguien. Simplemente llamé al Centro de ayuda de Google Apps y me pidieron que cambiara la configuración lesssecurepps (como todos los demás) pero también cambiaron el puerto a 465.

En mi caso, ¡eso funcionó!

También me enfrenté al problema, y ​​después de investigar en la configuración de Gmail, encontré la solución:

  1. En gmail, ve a la configuración.

  2. Seleccione la pestaña “Reenvío y POP / IMAP”.

  3. En la sección de acceso IMAP, seleccione “Habilitar IMAP”.

Hola, esto también funcionó para mí, por lo que si alguien sigue teniendo problemas, pruébalo.

Asegúrate de tener figaro en tu gemfile. Para guardar información sensible como nombre de usuario y contraseña como variables de entorno

 gem 'figaro' 

Y en su config / environments / development.rb, pegue los códigos a continuación utilizando smtp como método de entrega

  config.action_mailer.delivery_method = :smtp 

Configuración de SMTP para Gmail

  config.action_mailer.smtp_settings = { :address=> "smtp.gmail.com", :port => 587, :user_name => ENV['gmail_username'], :password=> ENV['gmail_password'], :authentication=> "plain", :enable_starttls_auto=>true } config.action_mailer.default_url_options = { host: "locahost:3000" } 

En su directorio de configuración, cree un archivo llamado application.yml y agregue los códigos a continuación.

 gmail_username: 'example@gmail.com' gmail_password: "your_example_email_password_here" 

Debe usar su correo electrónico y contraseña para la autenticación en el archivo.

Yo tuve el mismo problema.

Puede activar la opción de less secure apps ( aquí ).
https://myaccount.google.com/lesssecureapps

Y desbloquea Captcha ( enlace ):
https://accounts.google.com/DisplayUnlockCaptcha

La respuesta aceptada parece muy antigua, no sé si en ese momento existía la siguiente solución (mejor):

¡Ahora, enviar correos electrónicos funciona perfectamente!

Tuve el mismo problema y después de algunas pruebas y errores, he llegado a esta resolución, que es una opción para habilitarse en google:

Haz clic en https://www.google.com/settings/u/0/security/lesssecureapps

Habilite ‘Acceso para aplicaciones menos seguras’ aquí iniciando sesión con la dirección de correo electrónico que ha proporcionado en la configuración smtp.