Biblioteca Nodemailer: envío de correos electrónicos en JavaScript (Node.js)
Nodemailer es el módulo más popular para enviar correos electrónicos desde aplicaciones Node.js. Proporciona una API simple pero potente para trabajar con varios servicios de correo (SMTP, Gmail, Outlook, SendGrid, Amazon SES, etc.). La biblioteca admite plantillas HTML, archivos adjuntos, flujos de datos y cifrado (SSL/TLS).
¿Para qué sirve Nodemailer?
En el desarrollo web moderno, el envío de correos electrónicos es una funcionalidad básica: correos de registro, restablecimiento de contraseña, notificaciones, boletines. Nodemailer resuelve las siguientes tareas:
- Trabajo universal con cualquier servidor SMTP.
- Soporte para mensajes HTML y de texto plano.
- Archivos adjuntos (imágenes, PDF, archivos comprimidos).
- Transmisión por flujo de datos grandes.
- Integración con servicios populares (Gmail, Yandex, Mail.ru).
Instalación
Instale el módulo a través de npm:
npm install nodemailerPara TypeScript adicionalmente:
npm install @types/nodemailerFunciones principales
- createTransport() — creación de un transporte para conectarse al servidor de correo.
- sendMail() — envío de un correo con configuraciones (de, para, asunto, cuerpo, archivos adjuntos).
- verify() — verificación de la conexión con el servidor.
- use() — conexión de plugins (por ejemplo, para plantillas).
Ejemplo de código en Node.js
const nodemailer = require('nodemailer');
// Configuración del transporte (ejemplo para Gmail con App Password)const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'your-email@gmail.com', pass: 'your-app-password' // No es una contraseña normal, sino una contraseña de aplicación }});
// Función para enviar el correoasync function sendEmail() { try { const info = await transporter.sendMail({ from: '"Your Name" <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>' }); console.log('Correo enviado: %s', info.messageId); } catch (error) { console.error('Error al enviar:', error); }}
sendEmail();¿Cuándo usar Nodemailer?
- Registro e inicio de sesión — envío de correos de confirmación de email.
- Notificaciones — alertas sobre acciones del usuario (pedido, comentario).
- Boletines — envío masivo (pero para grandes volúmenes es mejor usar SendGrid/Mailgun).
- Depuración — envío de correos en un entorno local (a través de Ethereal o Mailtrap).
Importante: Para producción, use servidores SMTP reales (SendGrid, Amazon SES, Mailgun) o configure su propio servidor de correo. Gmail tiene límites (500 correos/día) y requiere una contraseña de aplicación.
Nodemailer es el estándar de facto para el envío de correos electrónicos en Node.js. Es simple, confiable y tiene una gran comunidad.