Nodemailer: envío de email en JavaScript (Node.js)
Nodemailer es el módulo más popular para enviar correos electrónicos desde aplicaciones en Node.js. Proporciona una API simple y flexible para trabajar con servidores SMTP, además de soportar plantillas HTML, adjuntos, transmisión por flujo y múltiples transportes (SMTP, Sendmail, Amazon SES y otros).
¿Para qué sirve Nodemailer?
En las aplicaciones web, a menudo es necesario enviar correos: confirmaciones de registro, restablecimiento de contraseña, notificaciones, boletines. Nodemailer permite hacerlo sin dependencias innecesarias, con soporte para OAuth2, SSL/TLS y codificaciones. Funciona de forma asíncrona y no bloquea el Event Loop.
Instalación
Instale el módulo a través de npm:
npm install nodemailerPara trabajar con Gmail o Yandex.Mail, puede ser necesaria una configuración adicional (contraseña de aplicación o OAuth2).
Funciones principales
- Envío a través de SMTP, Sendmail, AWS SES, Mailgun, SendGrid
- Soporte para correos HTML y de texto plano
- Adjuntos (archivos, imágenes, Buffer, Stream)
- Autenticación OAuth2 (Gmail, Outlook)
- Pool de conexiones para envíos masivos
- Plantillas (integración con Handlebars, EJS)
Ejemplo de código en JavaScript (Node.js)
Ejemplo simple de envío de correo a través de Gmail SMTP:
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-app-password'
}
});
const mailOptions = {
from: 'your-email@gmail.com',
to: 'recipient@example.com',
subject: 'Hola desde Node.js',
html: '<h1>Correo de prueba</h1><p>Enviado a través de Nodemailer</p>'
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log('Error:', error);
} else {
console.log('Correo enviado:', info.response);
}
});Cuándo usarlo
Nodemailer es adecuado para cualquier proyecto de Node.js que requiera envío de email: desde scripts simples hasta aplicaciones corporativas. Es estable, bien documentado y cuenta con el respaldo de miles de desarrolladores. Si necesita envíos masivos (newsletter), es mejor usar servicios especializados (SendGrid, Mailchimp) a través de su API, pero para transactional email, Nodemailer es la opción ideal.