es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo solucionar el problema de Nodemailer “Error: El servidor termina la conexión. Respuesta = 421 4.7.0 Inténtalo de nuevo más tarde, cerrando la conexión”.

Estoy tratando de enviar correos electrónicos desde un servidor Node.js/Express. Tengo un correo electrónico en mi propio dominio que está enviando estos mensajes. Los correos electrónicos se enviarían muy raramente, pero ocasionalmente puede que hasta 20 veces en una hora. Sin embargo, siempre se envían de forma individual y nunca en lotes.

Alrededor del 50-75% de las veces que intento enviar un correo electrónico, obtengo este error, incluso en los primeros 2 o 3 correos electrónicos:

Error: El servidor termina la conexión. Respuesta=421 4.7.0 Intente de nuevo más tarde, cerrando la conexión.

Mi investigación muestra que es un problema de envío masivo de correo electrónico para prevenir ataques DDoS. La cantidad de correos electrónicos que mencionan las personas son más de 50 en un segundo, sin embargo, este no es mi caso de uso.

Aquí es cómo estoy enviando actualmente el correo:

var transporter = nodemailer.createTransport({
    host: 'smtp-relay.gmail.com',
    port: 587,
    auth: {
        user: 'usuario',
        pass: 'contraseña'
    }
});

var mailOptions = {
    from: 'origen',
    to: correo_destino,
    subject: 'asunto',
    html: 'texto'
};

transporter.sendMail(mailOptions, function (err, info) {
    if (err) {
        console.log(err);
        return ('Error al enviar el correo electrónico' + err)
    }
    else {
        console.log("Correo electrónico enviado");
        return ('Correo electrónico enviado')
    }
});

He intentado cambiar los puertos, pero no sé qué más probar. ¡Cualquier ayuda sería muy apreciada!

Edit: Para cualquiera que venga más tarde, no hubo una solución en ninguna parte. Lo mejor que pude hacer es volver a intentar en caso de fallo siguiendo esta respuesta: https://stackoverflow.com/questions/56920250/retry-to-send-mail-if-not-sent/56920367#56920367. Falló máximo 5 o 6 veces, así que solo configura el límite en 7 o algo así.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Según tu investigación y el mensaje de error que estás recibiendo, parece que el problema puede estar relacionado con las medidas de prevención de spam en el servidor SMTP que estás utilizando para enviar correos electrónicos.

    Una solución potencial es intentar usar un servidor SMTP o servicio diferente, como SendGrid o Mailgun, que puedan tener medidas de prevención de spam menos estrictas implementadas.

    Otra opción podría ser implementar un mecanismo de retraso o reintento en tu código. Por ejemplo, podrías intentar enviar el correo electrónico nuevamente después de cierto tiempo (por ejemplo, 5-10 segundos) si el primer intento falla. Esto podría ayudar a mitigar cualquier problema relacionado con la limitación de la velocidad o medidas de prevención de spam.

    Además, es posible que desees consultar con tu proveedor de servicios de correo electrónico para ver si tienen directrices o recomendaciones específicas para enviar correos electrónicos desde un dominio personalizado. Ellos podrían brindarte consejos o asistencia más específica basada en tu caso de uso.

Comments are closed.