Cómo enviar correos electrónicos con Node.js

C

Introducción

El correo electrónico es una de las herramientas de comunicación más utilizadas en aplicaciones web porque le ayuda a llegar a sus usuarios directamente, construir su marca o enviar notificaciones generales.

Entonces, está pensando en enviar correos electrónicos desde su próxima gran aplicación Node.js. Estás en el lugar correcto!

En este tutorial, aprenderá a enviar correos electrónicos con contenido HTML y archivos adjuntos utilizando el Nodemailer módulo, así como configurar Mailtrap, un servidor SMTP falso, para probar su código.

Prerrequisitos

Para seguir adelante, necesitará tener Node.js y npm (Node Package Manager) instalado localmente.

Para probar el envío de correos electrónicos desde una máquina de desarrollo local, sin tener que configurar un servidor, usaremos Mailtrap.

Empezando

Hay muchos módulos de Node.js para enviar correos electrónicos. Entre ellos, nodemailer es la opción más popular. Es un módulo que le brinda la capacidad de enviar correos electrónicos fácilmente sin problemas.

Sigamos adelante y creemos una nueva carpeta y una nueva package.json archivo con el npm init mando:

$ mkdir nodejs-email
$ cd nodejs-email
$ npm init -y

los -y La bandera proporcionada omitirá la herramienta paso a paso para crear un andamio en su proyecto.

Ahora instalemos el nodemailer módulo usando npm:

$ npm install nodemailer

Con el modelo listo para usar, creemos un index.js archivo en nuestro directorio de proyectos.

En Node.js, el require la sintaxis se usa para cargar módulos en su código:

const nodemailer = require('nodemailer');

Uso de SMTP para transporte Nodemailer

los Protocolo simple de transferencia de correo (SMTP) es un protocolo para enviar mensajes de correo electrónico entre servidores. La mayoría de los sistemas de correo electrónico que envían correo a través de Internet admiten el envío basado en SMTP.

¿Y adivina qué? SMTP es el transporte principal utilizado por nodemailer para entregar mensajes.

Creando un nodemailer El transporte es tan fácil como llamar al siguiente método con algunos parámetros:

let transport = nodemailer.createTransport(options[, defaults])

Sin embargo, para enviar un mensaje a través de nuestro transporte, primero tenemos que configurar la conexión.

Probando nuestro código con Mailtrap

Mailtrap es un “servidor SMTP falso” que se utiliza con fines de desarrollo. En lugar de tener que probar su código con su propia cuenta de correo electrónico y potencialmente inundar su bandeja de entrada con correos electrónicos de prueba, puede usar Mailtrap como punto final.

Cree una nueva cuenta en Mailtrap si aún no tiene una, y luego cree una nueva bandeja de entrada y obtenga sus credenciales:

Ahora, todo lo que tenemos que hacer es poner las credenciales en nodemailerobjeto de transporte:

let transport = nodemailer.createTransport({
    host: 'smtp.mailtrap.io',
    port: 2525,
    auth: {
       user: 'put_your_username_here',
       pass: 'put_your_password_here'
    }
});

Con toda esa configuración, podemos continuar y enviar nuestro primer correo electrónico de prueba:

const message = {
    from: '[email protected]', // Sender address
    to: '[email protected]',         // List of recipients
    subject: 'Design Your Model S | Tesla', // Subject line
    text: 'Have the most fun you can in a car. Get your Tesla today!' // Plain text body
};
transport.sendMail(message, function(err, info) {
    if (err) {
      console.log(err)
    } else {
      console.log(info);
    }
});

¡Ta-da, eso es!

Envío de un correo electrónico HTML

Si bien el ejemplo anterior funciona bien, es lo que algunos pueden llamar “aburrido”.

Hoy en día, los correos electrónicos tienden a ser de estilo, coloridos, con botones grandes y efectos visuales emocionantes y atractivos. Para lograr esto, incorporamos HTML en nuestros correos electrónicos.

Puede crear estos correos electrónicos HTML y enviarlos con nodemailer tan fácilmente como podría enviar un correo electrónico de texto sin formato. Todo lo que se necesita es usar el html parámetro en el message objeto en lugar de text:

const message = {
    from: '[email protected]',
    to: '[email protected]',
    subject: 'Design Your Model S | Tesla',
    html: '<h1>Have the most fun you can in a car!</h1><p>Get your <b>Tesla</b> today!</p>'
};

Aunque este ejemplo es bastante simple, solo incluye un <h1>, <p>y <b> etiqueta, puede incluir mucho, mucho más.

¡Voilà!

Tenga en cuenta que también puede enviar HTML y texto sin formato en un solo correo electrónico proporcionando ambos parámetros. Con ambas versiones en su mensaje de correo electrónico, el cliente de correo electrónico del destinatario puede elegir cuál mostrar.

Envío de correo electrónico con un archivo adjunto

Existen innumerables razones por las que es posible que desee incluir un archivo adjunto en su correo electrónico, como enviar imágenes, hojas de cálculo para el trabajo o videos.

Como otro ejemplo, si ejecuta un sitio web de comercio electrónico, por ejemplo, es posible que desee enviar recibos a sus clientes:

const nodemailer = require("nodemailer");

let transport = nodemailer.createTransport({
    // ...
});

const message = {
    from: '[email protected]',
    to: '[email protected]',
    subject: 'Design Your Model S | Tesla',
    html: '<h1>Have the most fun you can in a car!</h1><p>Get your <b>Tesla</b> today!</p>',
    attachments: [
        { // Use a URL as an attachment
          filename: 'your-testla.png',
          path: 'https://media.gettyimages.com/photos/view-of-tesla-model-s-in-barcelona-spain-on-september-10-2018-picture-id1032050330?s=2048x2048'
      }
    ]
};
transport.sendMail(message, function (err, info) {
    // ...
 });

Y también puede utilizar un archivo en disco como adjunto. No necesitan estar basados ​​en la web.

Conclusión

Ahora puede enviar fácilmente correos electrónicos personalizados en su código Node.js utilizando el nodemailer módulo. Y no olvides, el nodemailer documentación es tu mejor amigo para conocer las opciones más avanzadas.

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad