Envío de correo electrónico en JavaScript (Node.js) — bibliotecas y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Envío de correo electrónico en JavaScript (Node.js): guía completa



El envío de correos electrónicos es una de las funciones clave de cualquier aplicación web moderna. Ya sean notificaciones, confirmación de registro, boletines o restablecimiento de contraseña, saber cómo enviar correos electrónicos programáticamente es necesario para todo desarrollador. En este material, analizaremos en detalle cómo organizar el envío de correos electrónicos en JavaScript (Node.js) utilizando bibliotecas populares, configuraciones SMTP y mejores prácticas.



¿Por qué enviar correos electrónicos desde Node.js?

Node.js es un entorno de ejecución asíncrono de JavaScript que es excelente para manejar una gran cantidad de solicitudes. El envío de correos a través de Node.js permite:

  • Automatizar las notificaciones a los usuarios;
  • Integrar los boletines por correo electrónico con el backend;
  • Manejar errores de envío en tiempo real;
  • Usar un solo lenguaje (JavaScript) para todo el proyecto.


Bibliotecas principales para enviar correos electrónicos en Node.js

Hoy en día, existen varias bibliotecas probadas. Veamos las más populares:



1. Nodemailer

Nodemailer es el estándar de facto para el envío de correos electrónicos en Node.js. La biblioteca admite SMTP, plantillas integradas, archivos adjuntos, correos HTML y OAuth2. Es gratuita y no requiere servicios externos.

// Instalación: npm install nodemailerconst nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport({ host: 'smtp.example.com', port: 587, secure: false, // true para el puerto 465 auth: { user: 'user@example.com', pass: 'your-password' }});

async function sendMail() { const info = await transporter.sendMail({ from: '"Remitente" <from@example.com>', to: 'to@example.com', subject: 'Hola desde Node.js', text: 'Este es un correo de prueba.', html: '<b>Este es un correo de prueba.</b>' }); console.log('Correo enviado:', info.messageId);}sendMail().catch(console.error);


2. SendGrid (a través de @sendgrid/mail)

SendGrid es un servicio en la nube para boletines por correo electrónico de Twilio. La biblioteca @sendgrid/mail permite enviar correos fácilmente a través de la API de SendGrid. Es adecuada para proyectos a gran escala.

// Instalación: npm install @sendgrid/mailconst sgMail = require('@sendgrid/mail');sgMail.setApiKey('YOUR_SENDGRID_API_KEY');

const msg = { to: 'recipient@example.com', from: 'sender@example.com', subject: 'Envío a través de SendGrid', text: '¡Hola desde SendGrid!', html: '<strong>¡Hola desde SendGrid!</strong>'};

sgMail.send(msg) .then(() => console.log('Correo enviado')) .catch(error => console.error(error));


3. Mailgun.js

Mailgun es otro servicio popular para desarrolladores. La biblioteca mailgun.js proporciona una interfaz conveniente para enviar correos y gestionar boletines.

// Instalación: npm install mailgun.jsconst formData = require('form-data');const Mailgun = require('mailgun.js');const mailgun = new Mailgun(formData);

const mg = mailgun.client({ username: 'api', key: 'YOUR_MAILGUN_API_KEY'});

mg.messages.create('sandbox.mailgun.org', { from: 'Mailgun Sandbox <postmaster@sandbox.mailgun.org>', to: ['recipient@example.com'], subject: 'Saludos desde Mailgun', text: 'Correo de prueba a través de Mailgun.'}).then(msg => console.log(msg)).catch(err => console.error(err));


Configuración SMTP para el envío de correos electrónicos

Si utiliza su propio servidor de correo o una cuenta de Gmail/Yandex, necesitará configurar SMTP. Aquí hay un ejemplo para Gmail:

const transporter = nodemailer.createTransport({    service: 'gmail',    auth: {        user: 'your@gmail.com',        pass: 'your-app-password' // Use una contraseña de aplicación    }});

Recommendations