Error de Google SMTP: 454 4.7.0 Demasiados intentos de inicio de sesión, intente nuevamente más tarde
17
Descubrí que si bien era posible usar Gmail / Google Apps como un servidor SMTP para uso con script, si se enviaban demasiados correos electrónicos, comencé a recibir mensajes de error:
SMTP Error: 454 4.7.0 Too many login attempts, please try again later.
Por lo general, si esperaba una o dos horas, podría enviar otros 100 correos electrónicos más o menos, pero pronto volvería a encontrarme con el mismo mensaje de error.
Descubrí que el problema era que, aunque teníamos registros SPF configurados para nuestros dominios, no teníamos un registro DKIM asociado a nuestro dominio. Para agregar un registro DKIM en Google Apps, debe hacer lo siguiente:
Ir a la Consola de administración
Haga clic en "Google Apps"
Haga clic en "Gmail"
Desplácese hacia abajo hasta que vea "Autenticar correo electrónico" y haga clic en eso
Seleccione el dominio al que desea agregar DKIM
Cuando le pregunte qué prefijo desea usar, simplemente use el valor predeterminado de 'google'
Luego verá un registro TXT en dos partes, una pieza tiene el dominio y la otra tiene el registro TXT real. Debe ingresar a la configuración de DNS en su servidor para su dominio y agregar este registro. Si su panel de control de DNS no le permite agregar el dominio google._domainkey, simplemente haga que el dominio sea totalmente calificado google._domainkey.example.com.
Después de hacer esto, dele al registro DNS un poco de tiempo para propagarse y luego haga clic en "Iniciar autenticación" en el panel de administración de Google Apps. Si ve una marca de verificación verde, lo ha hecho, y el correo electrónico debería comenzar a fluir nuevamente a través del servidor SMTP.
¿Qué pasa si no tienes el control del servidor DNS?
Ismael
1
Un salvavidas. Parece que gmail verificará los servidores autorizados para el registro TXT, por lo que no debería tener que esperar la propagación completa de DNS; para la mayoría de los cambios realizados en estos días a través de un administrador de archivos de zona DNS, no tendrá que esperar más que unos pocos segundos para que el cambio surta efecto.
JT Taylor
4
No debe autenticarse para cada correo electrónico que debe enviar.
Al comienzo del proceso:
Session session = loadSession();
Transport transport = session.getTransport("smtp");
transport.connect("[email protected]", "password");
Después, use el objeto de transporte para enviar cada correo sin iniciar sesión:
Al usar SMTP cuando envía un correo electrónico masivo, inicie sesión con cada correo y luego cierre sesión. Debido a que Google bloquea tu conexión. Lo que funcionó para mí es establecer SMTPKeepAlive en verdadero.
No debe autenticarse para cada correo electrónico que debe enviar.
Al comienzo del proceso:
Después, use el objeto de transporte para enviar cada correo sin iniciar sesión:
Después de enviar todos los correos electrónicos, debe cerrar la conexión:
fuente
La solución de @ victorpacheco3107 funcionó para mí, esto es lo que hice en ruby:
fuente
Al usar SMTP cuando envía un correo electrónico masivo, inicie sesión con cada correo y luego cierre sesión. Debido a que Google bloquea tu conexión. Lo que funcionó para mí es establecer SMTPKeepAlive en verdadero.
fuente