Envío de correo electrónico en TypeScript: 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 TypeScript: guía completa

TypeScript es un superconjunto de JavaScript con tipado estricto, utilizado activamente en aplicaciones web modernas. El envío de correos electrónicos es una de las tareas clave para el backend, las notificaciones y el marketing. En este artículo, analizaremos en detalle varias bibliotecas para el envío de correos electrónicos en TypeScript, incluyendo configuración, envío de correos simples y HTML, así como el trabajo con archivos adjuntos.



¿Por qué TypeScript para el envío de correos electrónicos?

TypeScript añade tipado, lo que reduce la cantidad de errores en la etapa de desarrollo. Al enviar correos electrónicos, esto es especialmente importante: los tipos correctos para el host SMTP, puerto, credenciales y opciones del correo ayudan a evitar errores en tiempo de ejecución. Además, TypeScript admite las construcciones modernas async/await, lo que hace que el código sea más limpio y comprensible.



Bibliotecas principales para el envío de correos electrónicos en TypeScript

  • nodemailer — la biblioteca más popular para Node.js, totalmente compatible con TypeScript. Soporta SMTP, Sendmail, archivos adjuntos, plantillas HTML.
  • @sendgrid/mail — el cliente oficial de SendGrid para Node.js con tipos TypeScript. Utiliza la API de SendGrid, no requiere SMTP.
  • aws-sdk (SES) — Amazon Simple Email Service. Una potente solución para envíos masivos, integración con AWS.
  • emailjs — una biblioteca ligera con soporte para TypeScript, pero menos popular.


Instalación y configuración de nodemailer con TypeScript

Instale los paquetes a través de npm:

npm install nodemailernpm install @types/nodemailer --save-dev

Ejemplo básico de envío de correo electrónico a través de SMTP (Gmail, Yandex, Mail.ru, etc.):

import nodemailer from 'nodemailer';

interface EmailOptions { to: string; subject: string; text?: string; html?: string;}

async function sendEmail(options: EmailOptions): Promise<void> { const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, // true para el puerto 465 auth: { user: 'your-email@gmail.com', pass: 'your-password-or-app-password', }, });

const mailOptions = { from: '"Su nombre" <your-email@gmail.com>', to: options.to, subject: options.subject, text: options.text, html: options.html, };

const info = await transporter.sendMail(mailOptions); console.log('Correo enviado:', info.messageId);}

// UsosendEmail({ to: 'user@example.com', subject: '¡Hola desde TypeScript!', html: '<h1>Prueba</h1><p>Este es un correo HTML.</p>',});

Importante: Para Gmail, active "Acceso a aplicaciones menos seguras" o use una contraseña de aplicación (App Password). Para producción, es mejor usar OAuth2.



Envío de correo electrónico a través de SendGrid en TypeScript

SendGrid proporciona una API lista para usar que no requiere SMTP. Instalación:

npm install @sendgrid/mail

Ejemplo de envío:

import sgMail from '@sendgrid/mail';

sgMail.setApiKey('YOUR_SENDGRID_API_KEY');

interface SendGridMessage { to: string; from: string; subject: string; html: string;}

async function sendWithSendGrid(message: SendGridMessage): Promise<void> { try { await sgMail.send(message); console.log('Correo enviado a través de SendGrid'); } catch (error) { console.error('Error al enviar:', error); }}

sendWithSendGrid({ to: 'user@example.com', from: 'sender@yourdomain.com', subject: 'Prueba SendGrid + TypeScript', html: '<p>Este mensaje fue enviado a través de la API de SendGrid.</p>',});


Envío de correo electrónico con archivos adjuntos en TypeScript

nodemailer admite archivos adjuntos de cualquier tipo. Ejemplo con un archivo PDF:

import nodemailer from 'nodemailer';import path from 'path';

async function sendWithAttachment()

Recommendations