template sendemail node mail enviar correo con node.js email nodemailer

node.js - enviar - nodemailer sendemail



Nodemailer enviar correo electrónico sin el transporte smtp (7)

Cuando usted en su configuración, le permite enviar correos. https://www.google.com/settings/security/lesssecureapps este funcionó para mí

Estoy intentando enviar correos electrónicos a través de nodemailer sin el transporte SMTP. Así que he hecho eso:

var mail = require("nodemailer").mail; mail({ from: "Fred Foo ✔ <[email protected]>", // sender address to: "******@gmail.com", // list of receivers subject: "Hello ✔", // Subject line text: "Hello world ✔", // plaintext body html: "<b>Hello world ✔</b>" // html body });

Pero cuando corro lo entiendo:

> node sendmail.js Queued message #1 from [email protected], to [email protected] Retrieved message #1 from the queue, reolving gmail.com gmail.com resolved to gmail-smtp-in.l.google.com for #1 Connecting to gmail-smtp-in.l.google.com:25 for message #1 Failed processing message #1 Message #1 requeued for 15 minutes Closing connection to the server Error: read ECONNRESET at errnoException (net.js:901:11) at TCP.onread (net.js:556:19)

Estoy en windows 7 32.

EDIT Esto parece ser un error relacionado con Windows ya que funcionó en Linux

EDITAR # 2

En el shell git, si ingreso telnet smtp.gmail 587 , se bloquea aquí:

220 mx.google.com ESMTP f7...y.24 -gsmtp


Debe tener un servidor SMTP, un servidor de correo electrónico que reenvíe los correos electrónicos en su nombre. Entonces, configure su propio servidor SMTP como Haraka o proporcione credenciales a Nodemailer para conectarse a uno, por ejemplo, Gmail, MSN, Yahoo. Incluso empecé a aprender NodeJs e intenté incluir una función de correo electrónico en mi proyecto y este fue el mismo problema que enfrenté.


Desde la salida de su ejemplo, parece que se conecta al puerto 25 incorrecto, los puertos smtp de gmail que se abren son 465 para SSL y los otros 587 TLS.

Nodemailer detecta la configuración correcta basada en el dominio de correo electrónico, en su ejemplo, no ha configurado el objeto de transportador, por lo que utiliza el puerto predeterminado 25 configurado. Para cambiar el puerto especifique en opciones el tipo.

Aquí está el pequeño ejemplo que debería funcionar con gmail:

var nodemailer = require(''nodemailer''); // Create a SMTP transport object var transport = nodemailer.createTransport("SMTP", { service: ''Gmail'', auth: { user: "[email protected]", pass: "Nodemailer123" } }); console.log(''SMTP Configured''); // Message object var message = { // sender info from: ''Sender Name <[email protected]>'', // Comma separated list of recipients to: ''"Receiver Name" <[email protected]>'', // Subject of the message subject: ''Nodemailer is unicode friendly ✔'', // plaintext body text: ''Hello to myself!'', // HTML body html:''<p><b>Hello</b> to myself <img src="cid:note@node"/></p>''+ ''<p>Here/'s a nyan cat for you as an embedded attachment:<br/></p>'' }; console.log(''Sending Mail''); transport.sendMail(message, function(error){ if(error){ console.log(''Error occured''); console.log(error.message); return; } console.log(''Message sent successfully!''); // if you don''t want to use this transport object anymore, uncomment following line //transport.close(); // close the connection pool });


Esto parece ser posible en nodemailer. No estoy seguro si esto no existía cuando se proporcionaron las otras respuestas. Tal como se documenta aquí: https://nodemailer.com/transports/sendmail/ puede usar el sendmail incorporado si está disponible para hacer su envío. He probado esto para mi propio uso y funciona bien. Obviamente, hay ventajas de SMTP pero decir que no es posible no es cierto.


Parece que el nodemailer actual ya no tiene la opción de enviar correos sin smtp. Recomendaría echar un vistazo a la biblioteca de sendmail que NO necesita ningún smtp / auth para enviar correo electrónico. Te da una experiencia similar al uso de sendmail en linux.

const sendmail = require(''sendmail'')(); sendmail({ from: ''[email protected]'', to: ''[email protected]'', subject: ''Hello World'', html: ''Hooray NodeJS!!!'' }, function (err, reply) { console.log(err && err.stack) console.dir(reply) })

También puede activar el silent para hacerlo menos detallado: const sendmail = require(''sendmail'')({silent: true}); . Una cosa a tener en cuenta es que el remitente no puede ser esos dominios que tienen una policy DMARC como [email protected] .


Probablemente sea Windows Firewall o antivirus que impida el acceso saliente. intente habilitar los mensajes de depuración de nodemailer.

Habilitar depuración

var nodemailer = require("nodemailer"), transport = nodemailer.createTransport(''direct'', { debug: true, //this!!! }); transport.sendMail({ from: "Fred Foo ✔ <[email protected]>", // sender address to: "******@gmail.com", // list of receivers subject: "Hello ✔", // Subject line text: "Hello world ✔", // plaintext body html: "<b>Hello world ✔</b>" // html body }, console.error);


utilizar nodemailer 0.7.1.
Si ya instaló nodemailer, retírelo por

npm remove nodemailer

ahora instálalo por

npm install [email protected]

el siguiente código envía correo sin inicio de sesión, pero funcionará solo en el entorno de producción, no funcionará localmente

var mail = require("nodemailer").mail; mail({ from: "Fred Foo ✔ <[email protected]>", // sender address to: "[email protected], [email protected]", // list of receivers subject: "Hello ✔", // Subject line text: "Hello world ✔", // plaintext body html: "<b>Hello world ✔</b>" // html body });