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


95

Estoy enviando un correo electrónico desde mi aplicación Rails. Funciona bien en el entorno de desarrollo, pero falla en la preparación. 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 la :tls => trueopción obtengo

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

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

Timeout::Error (execution expired)

1
He copiado la URL por error (Google probablemente pensó de antemano por nosotros) en el navegador. Ingresé mi contraseña y en el panel que he visto cambió la posibilidad de realizar solicitudes no solo desde sitios confiables.
zmii

Respuestas:


249

Tuve el mismo problema: los correos electrónicos se enviaron desde el desarrollo, pero no desde la producción (donde estaba obteniendo 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 estaba bloqueando 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;)


3
En realidad, esa es la forma correcta de resolverlo (aunque puede poner en riesgo su cuenta). Pero funciona.
zakelfassi

40
Además, no olvide permitir el acceso a la cuenta aquí: google.com/settings/security/lesssecureapps
Chauskin Rodion

Pude evitar la lesssecureappsconfiguración utilizando la autenticación multifactor y habilitando una contraseña específica de la aplicación para mi servidor rails.
Chris Beck

1
Probablemente sea mejor utilizar un servicio como Mandrill para enviar correos electrónicos en un entorno de producción
Codebling

He activado la configuración de la cuenta lesssecureapps y fui a la página DisplayUnlockCaptcha y presioné OK, envié un correo electrónico a través de rieles pero recibí el mismo error Net::SMTPAuthenticationError ...ContinueSignIn.... Luego intenté hacer lo mismo después de 10 minutos y comenzó a funcionar.
Lev Lukomsky

25

Esta solución funciona para mí:

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 intento 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.


¿Hay alguna forma de evitar hacer esto? ¿Es posible registrar su aplicación en Google, por ejemplo?
jphager2

24

¡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é es:

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
}

1
¡Gracias! Este problema me estaba causando muchos dolores de cabeza y, al final, lo que tenía que hacer era cambiar la contraseña de mi cuenta de Google después de usar esta configuración y configurar la opción permitir aplicaciones menos seguras en la configuración de la cuenta de Google.
Corey

Después de configurar 'permitir aplicaciones menos seguras' y decirle a Google que confíe en mi dispositivo (IP del servidor) y esperar más de 24 horas ... un simple cambio de contraseña solucionó mis problemas de autenticación de Gmail. alguien en Google probablemente debería arreglar eso. ;)
Jason R

Estaba enfrentando el mismo problema. Ya había habilitado lessecureapps pero no se solucionará. Simplemente cambié mi contraseña y funcionó a la perfección. :)
Nikhil Sahu


13

La solución anterior proporcionó la configuración correcta (que ya tenía) pero no resolvió el problema. Después de varios intentos, seguí recibiendo el mismo error. Resulta que tuve que "borrar el CAPTCHA" de la web. Consulte la documentación de Gmail para obtener más detalles.

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


1
Enlace directo para "borrar el CAPTCHA" página: accounts.google.com/DisplayUnlockCaptcha
tmr08c

2

Mucho más tarde, pero por si acaso ayuda a alguien. Acabo de llamar al Centro de ayuda de Google Apps y me ordenaron cambiar la configuración de aplicaciones menos seguras (como todos los demás) pero también cambiar el puerto a 465.

En mi caso, ¡eso funcionó!



0

Hola, esto también funcionó para mí, así que si alguien todavía tiene un problema, pruebe esto.

Asegúrese de tener figaro en su archivo de gemas. Para guardar información confidencial como nombre de usuario y contraseña como variables de entorno

gem 'figaro'

Y en su config / environment / development.rb, pegue los códigos a continuación usando 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 utilizar su correo electrónico y contraseña para la autenticación en el archivo.


config.action_mailer.default_url_options = {host: "localhost: 3000"}
cooxy

0

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

  1. En gmail, vaya a configuración.

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

  3. En la sección de acceso IMAP, seleccione "Activar IMAP".


0

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

¡Ahora, enviar correos electrónicos funciona perfectamente!


0

Para resolver este problema:

  • Si ve: Net :: SMTPAuthenticationError (535-5.7.8 Nombre de usuario y contraseña no aceptados) , debe permitir que las aplicaciones menos seguras inicien sesión en su cuenta de Google. Para habilitar el inicio de sesión de aplicaciones menos seguras, siga: https://myaccount.google.com/lesssecureapps? . Pero permitirá que todas las aplicaciones inicien sesión. Si desea personalizarlo, consulte: https://support.google.com/a/answer/6260879?hl=es

  • Entonces es posible que obtenga Net :: SMTPAuthenticationError (534-5.7.14) , así que para resolver esto, consulte: pli = 1http: //www.google.com/accounts/DisplayUnlockCaptcha. Después de eso, haga clic en continuar desde la página que le redirigirán. Verificará su Captcha y su aplicación será verificada para usar su cuenta de Google para enviar correos electrónicos.

NOTA: asegúrese de que está utilizando las credenciales correctas de su cuenta de Gmail.

Si no está dispuesto a permitir todas las aplicaciones, consulte: https://support.google.com/a/answer/6260879?hl=en . Desde el enlace, vaya a Usar alternativas a aplicaciones menos seguras , esto lo guiará a una forma alternativa de permitir el acceso de aplicaciones menos seguras a su cuenta de Google.


-1

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

Haga 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 proporcionó en la configuración smtp.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.