Envío de correo electrónico en JavaScript (Node.js): nodemailer, sendgrid, mailgun
El envío de correos electrónicos es una de las funciones clave de las aplicaciones web modernas: registro de usuarios, restablecimiento de contraseñas, notificaciones y campañas de marketing. En el ecosistema de Node.js, existen varias soluciones probadas que permiten integrar la funcionalidad de correo en cuestión de minutos. En este artículo, analizaremos en detalle tres herramientas populares: nodemailer, sendgrid y mailgun. Aprenderá a configurar SMTP, enviar correos con adjuntos y plantillas HTML, así como qué métricas monitorear.
1. Nodemailer — Cliente SMTP universal
Nodemailer es la biblioteca más popular para enviar correos electrónicos en Node.js. Soporta SMTP, SES, Sendmail y múltiples transportes. Principales ventajas:
- Configuración sencilla a través de una cuenta SMTP (Gmail, Yandex, Mail.ru).
- Soporte para adjuntos, imágenes inline y plantillas HTML.
- Trabajo con colas y grupos de conexiones.
- Envío asíncrono mediante
async/await.
Instalación y envío básico
npm install nodemailerconst nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, // true para el puerto 465 auth: { user: 'tu-correo@gmail.com', pass: 'tu-contraseña' // o contraseña de aplicación }});
const mailOptions = { from: '"Remitente" <tu-correo@gmail.com>', to: 'destinatario@example.com', subject: '¡Hola desde Node.js!', text: 'Este es un correo de prueba.', html: '<h1>¡Hola!</h1><p>Esta es la versión HTML.</p>'};
const sendMail = async () => { const info = await transporter.sendMail(mailOptions); console.log('Correo enviado:', info.messageId);};
sendMail().catch(console.error);Envío con adjuntos
const mailOptions = { // ...campos principales attachments: [ { filename: 'documento.pdf', path: '/ruta/al/documento.pdf' }, { filename: 'imagen.png', content: fs.createReadStream('/ruta/a/la/imagen.png') } ]};Importante: para Gmail, use una contraseña de aplicación o OAuth2.
2. SendGrid — Servicio en la nube para correos transaccionales
SendGrid (parte de Twilio) proporciona una potente API para enviar correos electrónicos con alta capacidad de entrega. Es adecuado tanto para startups como para grandes proyectos. Principales funcionalidades:
- API con claves de acceso (sin SMTP).
- Plantillas dinámicas (Handlebars).
- Analítica: aperturas, clics, bajas.
- Plan gratuito de hasta 100 correos/día.
Instalación y envío
npm install @sendgrid/mailconst sgMail = require('@sendgrid/mail');sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = { to: 'destinatario@example.com', from: 'remitente@example.com', subject: 'Correo transaccional', text: 'Texto del correo', html: '<strong>Contenido HTML</strong>', attachments: [ { content: 'contenidocodificadoenbase64', filename: 'factura.pdf', type: 'application/pdf', disposition: 'attachment' } ]};
sgMail.send(msg) .then(() => console.log('Correo enviado')) .catch(console.error);Uso de plantillas dinámicas
const msg = { to: 'usuario@example.com', from: 'noreply@misitio.com', templateId: 'd-xxxxxxxxxxxxxxxx', dynamicTemplateData: { username: 'Iván', orderLink: 'https://misitio.com/pedido/123' }};3. Mailgun — Para alta
También en la biblioteca
Trabajo con fechas en Kotlin: bibliotecas y herramientas (Kotlinx-datetime, Joda-Time, java.time)
Configuración de aplicaciones Swift: biblioteca SwiftyConfig
Trabajo con CSV en Swift (iOS/macOS): librería SwiftCSV y fundamentos de parsing
Planificador de tareas Kotlin: descripción general y ejemplos de uso
Biblioteca WebSocket Gorilla para Go (Golang) — guía completa