Nodemailer: Envío de email en TypeScript
Nodemailer es el módulo más popular para enviar correos electrónicos desde aplicaciones Node.js y TypeScript. Permite integrar fácilmente el envío de email a través de SMTP, y también admite plantillas HTML, archivos adjuntos, streams y múltiples transportes (Gmail, Yandex, SendGrid, etc.). La biblioteca es totalmente compatible con TypeScript gracias a sus tipos incorporados.
¿Para qué sirve Nodemailer?
En el desarrollo web moderno, el envío de email es necesario para:
- Confirmación de registro (verificación)
- Restablecimiento de contraseña
- Notificaciones y boletines
- Alertas del sistema
Nodemailer simplifica este proceso proporcionando una API unificada para cualquier servicio de correo.
Instalación
npm install nodemailernpm install -D @types/nodemailerPara TypeScript, asegúrese de instalar el paquete con tipos.
Funciones principales
- Transporte SMTP — envío a través de cualquier servidor SMTP (Gmail, Mail.ru, Yandex, AWS SES).
- HTML y texto — soporte tanto para texto plano como para correos HTML.
- Archivos adjuntos — archivos, imágenes, Buffer, streams.
- Plantillas — integración con handlebars, pug y otros.
- Streams — envío de archivos grandes sin cargarlos en memoria.
- Pool de conexiones — mejora del rendimiento en envíos masivos.
Ejemplo de código en TypeScript
import nodemailer from 'nodemailer';
interface MailOptions { to: string; subject: string; text?: string; html?: string;}
async function sendEmail(options: MailOptions): Promise<void> { // Creamos el transporte (ejemplo para Gmail) const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'your-email@gmail.com', pass: 'your-app-password' } });
// Configuración del correo const mailData = { from: 'your-email@gmail.com', to: options.to, subject: options.subject, text: options.text || '', html: options.html || undefined };
// Envío const info = await transporter.sendMail(mailData); console.log('Correo enviado:', info.messageId);}
// UsosendEmail({ to: 'user@example.com', subject: '¡Hola desde TypeScript!', html: '<h1>Bienvenido</h1><p>Este es un correo de prueba.</p>'});Cuándo usar Nodemailer
La biblioteca es adecuada para:
- Cualquier proyecto en Node.js/TypeScript que necesite enviar email.
- Prototipos y MVP — configuración rápida a través de Gmail.
- Sistemas en producción — utilizando servicios transaccionales (SendGrid, Mailgun).
- Microservicios y serverless (Lambda, Cloud Functions).
No se recomienda usar Nodemailer para envíos masivos de spam — para eso existen ESP (Email Service Providers) especializados.
Conclusión
Nodemailer es una biblioteca madura, estable y bien documentada. Gracias a los tipos de TypeScript, obtienes autocompletado y verificación de errores en tiempo de compilación. Es la elección ideal para el envío de email en el ecosistema JavaScript/TypeScript.
También en la biblioteca
Carthage para Swift: guía completa con ejemplos prácticos
Pruebas en Kotlin: frameworks y herramientas para código de calidad
Generador de códigos QR en TypeScript: la biblioteca qrcode y su uso
Envío de correo electrónico en Go (Golang): bibliotecas y ejemplos de código
Programación reactiva en Java: bibliotecas Project Reactor y RxJava