Muy rápido acá documento dos ejemplos para el envío de mensajes de email mediante el módulo nodemailer.
No dejemos que nos intimide la terminología. El proceso es muy simple:
- Se hace una referencia al módulo nodemailer de nodejs (se puede instalar mediante
npm install nodemailer --save --verbose
. - Se crea un objeto
Transporter
que es el que define y realiza la comunicación con el servidor de correo electrónico, ya sea SMTP u otro protocolo conocido. - Se define el correo electrónico a enviar en un objeto al que llamaremos
mailOptions
en términos del remitente, destinatarios, tema y mensaje. - Se usa el objeto
Transporter
que creamos en #2 para enviar el email usando la funciónsendMail()
, y suministrando una función anónima de tipo «callback
» para ser ejecutada al final del proceso de envío. - Como nota adicional vamos a mencionar que al usar este módulo en una red que cuenta con servidores proxy, será necesario definir estos servidores en el Transponder (ejemplo). Esto resultó particularmente problemático al usar protocolo de GMail en una red con proxies.
A. Usando un Servidor SMTP sin autenticación
En este caso simplemente se enviará un mensaje de parte de cualquier cuenta de correo y el servidor decidirá si acepta o no enviar el mensaje.
console.log("nodeMailerSample()");
var nodemailer = require('nodemailer');
console.log("Creating transport...");
var transporter = nodemailer.createTransport({
host: 'smtp.mycompany.com',
port: 25,
secure: false, // true for 465, false for other ports
});
var mailOptions = {
from: 'my.sender.account@mycompany.com',
to: 'targetaccount1@othercompany.com,targetaccount2@onemorecompany.com',
subject: 'Sending Email using Node.js',
text: 'That was easy!'
};
console.log("sending email", mailOptions);
transporter.sendMail(mailOptions, function (error, info) {
console.log("senMail returned!");
if (error) {
console.log("ERROR!!!!!!", error);
} else {
console.log('Email sent: ' + info.response);
}
});
console.log("End of Script");
B. Usando un servicio bien conocido (well known services) como lo es gmail.
Este caso funciona bien si no hay restricciones de servidores proxy en medio de la comunicación y si la cuenta de gmail a utilizar tiene la opción de «Permitir aplicaciones menos seguras» habilitada.
console.log("nodeMailerSample()");
var nodemailer = require('nodemailer');
console.log("Creating transport...");
var transporter = nodemailer.createTransport({
service: 'gmail', //al usar un servicio bien conocido, no es necesario proveer un nombre de servidor.
auth: {
user: 'my.account.goes.here@gmail.com',
pass: 'strongpassword'
},
proxy: 'http://proxy-chain.intel.com:911'
});
var mailOptions = {
from: 'my.account.goes.here@gmail.com',
to: 'targetaccount1@othercompany.com,targetaccount2@onemorecompany.com',
subject: 'Sending Email using Node.js',
text: 'That was easy!'
};
console.log("sending email", mailOptions);
transporter.sendMail(mailOptions, function (error, info) {
console.log("senMail returned!");
if (error) {
console.log("ERROR!!!!!!", error);
} else {
console.log('Email sent: ' + info.response);
}
});
console.log("End of Script");
29,779 total views, 1 views today
Comentarios
Hola, estoy intentando usar la opción A Usando un Servidor SMTP sin autenticación. He instalado https://nodemailer.com/extras/smtp-server/, el smtp sin autentificacion y tu código va bien da el siguiente mensaje: Email sent: 250 OK: message queued y en el servidor smtp da el siguiente mensaje: S: 250 OK: message queued todo parece que va bien, pero los correos no llegan a gmail, sabias porque podría ser? antiguamente si lo hacia con un smtp de ono con puerto 25, y funcionaba bien(eso si, no tenia ssl e iban todos los mensajes a spam, que es lo de menos,ya que hoy día no serviria, pero es por aprender)