WhatsApp chat

Enviar email desde Node.js

Enviar email desde nodejs, • nodejsapi
Back

Nodemailer es la librería más utilizada para enviar correos electrónicos desde Node.js. Funciona con cualquier servidor SMTP y, para hacer pruebas, permite crear al momento una cuenta en Ethereal, un servicio que captura los correos sin entregarlos a nadie.

Instalación

Instalamos la dependencia con npm install nodemailer.

Código

email.js

"use strict";
const nodemailer = require("nodemailer");

// async..await is not allowed in global scope, must use a wrapper
async function main() {
  // Generate test SMTP service account from ethereal.email
  // Only needed if you don't have a real mail account for testing
  let testAccount = await nodemailer.createTestAccount();

  // create reusable transporter object using the default SMTP transport
  let transporter = nodemailer.createTransport({
    host: "smtp.ethereal.email",
    port: 587,
    secure: false, // true for 465, false for other ports
    auth: {
      user: testAccount.user, // generated ethereal user
      pass: testAccount.pass, // generated ethereal password
    },
  });

  // send mail with defined transport object
  let info = await transporter.sendMail({
    from: '"Fred Foo 👻" <foo@example.com>', // sender address
    to: "mfalconsoft@gmail.com, mfalconsoft@gmail.com", // list of receivers
    subject: "Hello ✔", // Subject line
    text: "Hello world?", // plain text body
    html: "<b>Hello world?</b>", // html body
  });

  console.log("Message sent: %s", info.messageId);
  // Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>

  // Preview only available when sending through an Ethereal account
  console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
  // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
}

main().catch(console.error);

Al ejecutarlo con node email.js, la consola mostrará el ID del mensaje y una URL de vista previa de Ethereal donde podemos ver el correo tal como se enviaría. Para enviarlo de verdad, basta con sustituir los datos del transporte por los de nuestro servidor SMTP (host, puerto, usuario y contraseña).