Introducción
Contenido
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.
Te puede interesar:Aprender Node.js: Guía para principiantesPrerrequisitos
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.
Te puede interesar:Zsh contra Bash¿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.
Te puede interesar:Introducción a BashProbando 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 nodemailer
objeto 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».
Te puede interesar:Web Scraping con Node.jsHoy 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.
Te puede interesar:Escribir en archivos en Node.jsComo 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.