Tengo un gran problema con la configuración del nodemailer en mi servidor node.js. Intenté todo lo que encontré en Internet pero nada funciona. Lo único que fue fácil de configurar fue el servicio de Gmail. pero desafortunadamente no puedo usar ese.
Con seguro establecido en verdadero , recibo un error SSL con el código de versión incorrecto .
[Error: 22468:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:332: ] { library: 'SSL routines', function: 'ssl3_get_record', reason: 'wrong version number', code: 'ESOCKET', command: 'CONN' }Pero cuando trato de establecer seguro en falso , aparece un mensaje de error de saludo no válido .
Error: Invalid greeting. response=* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2016 Double Precision, Inc. See COPYING for distribution information.: * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2016 Double Precision, Inc. See COPYING for distribution information. at SMTPConnection._actionGreeting (C:\Users\Motiondata\Documents\repos\rmn_app\server\rmn_server\node_modules\nodemailer\lib\smtp-connection\index.js:1189:27) at SMTPConnection._processResponse (C:\Users\Motiondata\Documents\repos\rmn_app\server\rmn_server\node_modules\nodemailer\lib\smtp-connection\index.js:932:20) at SMTPConnection._onData (C:\Users\Motiondata\Documents\repos\rmn_app\server\rmn_server\node_modules\nodemailer\lib\smtp-connection\index.js:739:14) at Socket.SMTPConnection._onSocketData (C:\Users\Motiondata\Documents\repos\rmn_app\server\rmn_server\node_modules\nodemailer\lib\smtp-connection\index.js:189:44) at Socket.emit (events.js:315:20) at addChunk (_stream_readable.js:309:12) at readableAddChunk (_stream_readable.js:284:9) at Socket.Readable.push (_stream_readable.js:223:10) at TCP.onStreamRead (internal/stream_base_commons.js:188:23) { code: 'EPROTOCOL', response: '* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2016 Double Precision, Inc. See COPYING for distribution information.', command: 'CONN' }Mi código es el siguiente:
const transporter = nodemailer.createTransport({ host: process.env.MAIL_HOST, // mx.example.com port: process.env.MAIL_PORT, // 143 secure: true, auth: { user: process.env.MAIL_ADDRESS, pass: process.env.MAIL_PWD } })Revisé las credenciales mil veces, definitivamente no son el problema.
Espero que alguien pueda ayudarme. Gracias por adelantado.
En referencia a este problema mencionado aquí: https://github.com/andris9/Nodemailer/issues/165
Vea si esto ayuda, agregando la opción tls.ciphers para usar SSLv3 :
const transport = nodemailer.createTransport({ host: process.env.MAIL_HOST, // mx.example.com port: process.env.MAIL_PORT, // 143 secureConnection: false, // TLS requires secureConnection to be false auth: { user: process.env.MAIL_ADDRESS, pass: process.env.MAIL_PWD }, tls: { ciphers:'SSLv3' } });Para Outlook365, esto debería funcionar:
service: "Outlook365", auth: { user: '[YOUR_O365_EMAIL]', pass: '[YOUR_O365_PASSWORD]' },Consulte aquí: https://stackoverflow.com/a/37725123/9360885
Si está utilizando HotMail, elimine host y el port , y simplemente agregue service: "hotmail" .
utilizar
secure: false, // true for 465, false for other ports
Ejemplo de documentos de nodemailer:
let transporter = nodemailer.createTransport({ host: 'smtp.ethereal.email', port: 587, secure: false, // true for 465, false for other ports auth: { user: account.user, // generated ethereal user pass: account.pass // generated ethereal password } });fuente: ejemplos de nodemailer
Si aún recibe el problema, solucione ingresando esto en su navegador manualmente mientras está conectado.
Usé el puerto 465 con Gmail y funcionó. Obtuve el error "número de versión incorrecto" con 587. El siguiente ejemplo es para una cuenta de servicio de GCP en una función de nube.
const transporter = nodemailer.createTransport({ host: "smtp.gmail.com", port: 465, secure: true, auth: { type: "OAuth2", user: process.env.GMAIL_ADDRESS, serviceClient: process.env.CLIENT_ID, privateKey: process.env.PRIVATE_KEY.replace(/\\n/g, "\n"), }, });