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

Introducción

El correo electrónico es una de las herramientas más utilizadas para la comunicación en aplicaciones web porque lo ayuda a llegar a sus usuarios directamente, a construir su marca o a enviar notificaciones generales.
Entonces, estás pensando en enviar correos electrónicos desde tu 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 módulo nodemailer , así como a configurar Mailtrap , un servidor SMTP falso, para probar su código.

Prerrequisitos

Para seguir adelante, deberá tener Node.js y npm (Administrador de paquetes de nodos) instalados localmente.
Para probar el envío de correos electrónicos desde una máquina de desarrollo local, sin tener que configurar un servidor, utilizaremos Mailtrap.

Empezando

Hay muchos módulos Node.js para enviar correos electrónicos. Entre ellos, nodemaileres la opción más popular. Es un módulo que le brinda la capacidad de enviar correos electrónicos fácilmente sin problemas.
Continuemos y creemos una nueva carpeta y un nuevo package.jsonarchivo con el npm initcomando:
$ mkdir nodejs-email
$ cd nodejs-email
$ npm init -y
La -ybandera provista saltará la herramienta paso a paso para organizar su proyecto.
Ahora instalemos el nodemailermódulo usando npm:
$ npm install nodemailer
Con el modelo listo para su uso, vamos a crear un index.jsarchivo en nuestro directorio de proyectos.
En Node.js, la requiresintaxis se usa para cargar módulos en su código:
const nodemailer = require('nodemailer');  

Usando SMTP para el transporte de Nodemailer

El 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 principal transporte utilizado por la nodemailerentrega de mensajes.
Crear un nodemailertransporte 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 debemos configurar la conexión.

Probando nuestro Código con Mailtrap

Mailtrap es un "servidor SMTP falso" usado para propósitos 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 el 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 nodemailerel objeto de transporte de:
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: 'elonmusk@tesla.com', // Sender address
    to: 'to@email.com',         // 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 todo!

Enviando un correo electrónico HTML

Si bien el ejemplo anterior hace el trabajo 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 visuales interesantes y atractivas. Para lograr esto, incrustamos HTML en nuestros correos electrónicos.
Puede crear estos correos electrónicos HTML y enviarlos nodemailertan fácilmente como podría enviar un correo electrónico de texto sin formato. Todo lo que se necesita es usar el htmlparámetro en el messageobjeto en lugar de text:
const message = {  
    from: 'elonmusk@tesla.com',
    to: 'to@email.com',
    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, incluyendo sólo una <h1><p><b>la etiqueta, puede incluir mucho, mucho más.
Voilà!
Tenga en cuenta que también puede enviar tanto HTML como texto sin formato en un solo correo electrónico al proporcionar 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.

Enviar correo electrónico con un archivo adjunto

Existen innumerables razones por las que puede querer incluir un archivo adjunto en su correo electrónico, como el envío de 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: 'elonmusk@tesla.com',
    to: 'to@email.com',
    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 usar un archivo en el disco como un archivo 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 usando el nodemailermódulo. Y no se olvide, la nodemailer documentación es su mejor amigo para aprender sobre las opciones más avanzadas.

Acerca de: Programator

Somos Instinto Programador

0 comentarios:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Con tecnología de Blogger.