Enviando Emails desde NodeJS usando el módulo nodemailer.

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");

582 total views, 6 views today

11Shares

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.