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:

  1. Se hace una referencia al módulo nodemailer de nodejs (se puede instalar mediante npm install nodemailer --save --verbose.
  2. 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.
  3. Se define el correo electrónico a enviar en un objeto al que llamaremos mailOptions en términos del remitente, destinatarios, tema y mensaje.
  4. Se usa el objeto Transporter que creamos en #2 para enviar el email usando la función sendMail(), y suministrando una función anónima de tipo «callback» para ser ejecutada al final del proceso de envío.
  5. 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,729 total views,  1 views today

11Shares
Última modificación: julio 12, 2018

Autor

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)

Escribe una respuesta o comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.