Estoy usando nodemailer en mi backend para enviar correos a través de smtps desde gmail (sí, smtp, no oauth2 porque este último es muy difícil de entender, y no funciona de ninguna manera, y las aplicaciones menos seguras están activadas) pero por alguna razón , nunca verificaría el inicio de sesión para mí y generaría esto:
Error: connect ETIMEDOUT <someip that I censored>:587 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1146:16) { errno: -4039, code: 'ESOCKET', syscall: 'connect', address: '<someip>', port: 587, command: 'CONN' } Dado que la contraseña tenía @ y # , y que yo sepa, smtps inicia sesión mediante una URL, así que cambié la contraseña y eliminé ambos. Luego, cuando intenté verificar el inicio de sesión y enviar un correo electrónico, ¡funcionó una vez! Luego detuve el proceso del nodo, cambié algo de código PERO NADA DE LA DECLARACIÓN DE CREACIÓN DE TRANSPORTADOR y cuando intenté volver a iniciar sesión, comenzó a devolver el mismo error. Probé en ambos, el método de objeto de opciones y el método de cadena. El código que funcionó una vez para mí fue
const transporter = nodemailer.createTransport(`smtps://${process.env.EMAIL_ADDRESS}@gmail.com:${process.env.EMAIL_PWD}@smtp.gmail.com/?pool=true`); transporter.verify((error, success)=>{ if (error) return log.error(error); log.success(`Connected to smtp.gmail.com with ${process.env.EMAIL_ADDRESS}@gmail.com`); }); NOTA: ${process.env.EMAIL_ADDRESS} es solo la parte xyz en xyz@gmail.com
Pero después, incluso esto no funcionó para mí. Incluso revertí todo el código de la A a la Z de lo que era cuando SÍ funcionó, pero eso también generaría el mismo error por alguna razón, y no puedo encontrar la solución. No cambié ni una sola cosa al verificar el inicio de sesión, ¡pero por alguna razón nunca funcionó! ¡Por favor ayuda!