Nodemailer para JavaScript (Node.js): guía completa con ejemplos

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

¿Qué es Nodemailer y para qué sirve?

\n\n

Nodemailer es un módulo para Node.js que permite enviar correos electrónicos desde tu aplicación JavaScript. Es una de las librerías más populares y estables en el ecosistema de Node.js para trabajar con correo electrónico. Proporciona una API simple pero potente para crear y enviar mensajes a través de diversos transportes (SMTP, Sendmail, Amazon SES y otros).

\n\n

¿Para qué sirve Nodemailer?

\n
    \n
  • Automatización de notificaciones: Envío de correos de registro, restablecimiento de contraseña, confirmación de pedido y otros eventos.
  • \n
  • Envíos masivos: Creación de boletines informativos, campañas de marketing (con precaución para no caer en spam).
  • \n
  • Formularios de contacto: Envío de mensajes desde formularios de contacto en el sitio web.
  • \n
  • Monitoreo y registros: Notificación al administrador sobre errores críticos en la aplicación.
  • \n
  • Flexibilidad: Soporte para plantillas HTML, archivos adjuntos, imágenes incrustadas y diversas codificaciones.
  • \n
\n\n

Nodemailer abstrae la complejidad de trabajar con protocolos de correo electrónico (SMTP, POP3, IMAP) y proporciona una interfaz unificada y comprensible.

\n\n

Instalación de Nodemailer

\n\n

La instalación de Nodemailer se realiza a través del gestor de paquetes npm (Node Package Manager). Asegúrate de tener instalado Node.js (versión 12 o superior).

\n\n

Abre la terminal en la carpeta raíz de tu proyecto y ejecuta el comando:

\n\n
npm install nodemailer
\n\n

Una vez finalizada la instalación, puedes importar la librería en tu código:

\n\n
const nodemailer = require('nodemailer');
\n\n

Para proyectos que usan módulos ES (con "type": "module" en package.json), utiliza la importación:

\n\n
import nodemailer from 'nodemailer';
\n\n

Inicio rápido: envío del primer correo

\n\n

La forma más sencilla de enviar un correo es usar un servidor SMTP. En este ejemplo, usaremos el servicio de Gmail. Importante: Para trabajar con Gmail, necesitarás crear una "contraseña de aplicación" (App Password) o usar OAuth2. La contraseña normal de la cuenta no funcionará debido a la configuración de seguridad de Google.

\n\n
const nodemailer = require('nodemailer');\n\n// 1. Creamos el transporte (método de envío)\nconst transporter = nodemailer.createTransport({\n    service: 'gmail',\n    auth: {\n        user: 'tu-correo@gmail.com', // Tu correo\n        pass: 'tu-contraseña-de-aplicación'     // Contraseña de aplicación\n    }\n});\n\n// 2. Configuramos el correo\nconst mailOptions = {\n    from: 'tu-correo@gmail.com',\n    to: 'destinatario@example.com',\n    subject: '¡Hola desde Nodemailer!',\n    text: 'Este es un correo de prueba enviado con Nodemailer.'\n};\n\n// 3. Enviamos el correo\ntransporter.sendMail(mailOptions, (error, info) => {\n    if (error) {\n        return console.log('Error:', error);\n    }\n    console.log('Correo enviado:', info.messageId);\n    console.log('URL para ver:', nodemailer.getTestMessageUrl(info));\n});\n
\n\n

Este código crea un transporte para Gmail, forma un correo de texto simple y lo envía. En caso de éxito, verás el ID del mensaje en la consola.

\n\n

Métodos y funciones principales de Nodemailer

\n\n

Veamos en detalle los métodos clave que proporciona la librería.

\n\n

1. nodemailer.createTransport(options)

\n

Qué hace: Crea un objeto de transporte: esta es la configuración principal que define cómo se enviará el correo (a través de qué servidor y con qué credenciales).

\n

Parámetros:

\n

Recommendations