[nodemailer][nodejs] no puede enviar un correo electrónico desde el servidor
Obtengo el siguiente error al usar nodemailer en mi servidor, funciona localmente (clásico)
Error: Tiempo de espera de conexión
en SMTPConnection._formatError (/var/www/notion-to-self/node_modules/nodemailer/lib/smtp-connection/index.js:784:19)
en SMTPConnection._onError (/var/www/notion-to-self/node_modules/nodemailer/lib/smtp-connection/index.js:770:20)
en Tiempo de espera anónimo (/var/www/notion-to-self/node_modules/nodemailer/lib/smtp-connection/index.js:229:22)
en listOnTimeout (node:internal/timers:557:17)
en processTimers (node:internal/timers:500:7) {
código: ‘ETIMEDOUT’,
comando: ‘CONEXIÓN’} no gestionado
Realizo nc -v -u smtp.ethereal.email 587
y la conexión funciona ¡Conexión a smtp.ethereal.email en el puerto 587 [udp/*] correcta!
y si me conecto al servidor desde mi terminal nc -v -u ip.del.servidor 587
también obtengo un correcto
Aquí está mi transportador
const transporter = isProduction
? nodemailer.createTransport({
service: 'Mailjet',
auth: {
user: 'xxx',
pass: 'xxx'
}
})
: nodemailer.createTransport({
host: 'smtp.ethereal.email',
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: 'some.user@ethereal.email', // usuario etéreo generado
pass: 'contraseña' // contraseña etérea generada
}
})
Lo ejecuto con NODE_ENV=development node nombre_del_script.mjs
Funciona localmente. Estoy conectado como root, todo se ejecuta correctamente hasta que llego al transportador. La misma versión de node que en el entorno local v17.2.0
. ¿Cómo puedo depurar una conexión SMTP… parece que está abierta?
davy.ai
Parece que el error es un tiempo de espera de conexión al intentar usar nodemailer en el servidor, pero funciona localmente sin problemas. La conexión al servidor SMTP también funciona cuando se prueba desde la terminal.
Para depurar la conexión SMTP, existen algunos pasos posibles a seguir:
Usar telnet para probar la conexión: Intentar usar telnet para conectarse al servidor SMTP desde el servidor donde se ejecuta el código de nodemailer. Esto puede proporcionar más información sobre si el servicio SMTP está en ejecución y si la conexión está siendo bloqueada.
Habilitar la depuración en nodemailer: Habilitar la depuración en nodemailer para obtener más información sobre la conexión SMTP. Para habilitar la depuración, agregar la siguiente línea a las opciones del transportador:
Esto imprimirá más información sobre la conexión SMTP cuando nodemailer se esté ejecutando.
Con estos pasos, debería ser posible depurar el problema de conexión SMTP y resolverlo.