Nodemailer : Envoi d'email en TypeScript
Nodemailer est le module le plus populaire pour envoyer des e-mails depuis des applications Node.js et TypeScript. Il permet d'intégrer facilement l'envoi d'email via SMTP, et prend également en charge les modèles HTML, les pièces jointes, les flux et de nombreux transports (Gmail, Yandex, SendGrid, etc.). La bibliothèque est entièrement compatible avec TypeScript grâce à ses types intégrés.
Pourquoi utiliser Nodemailer ?
Dans le développement web moderne, l'envoi d'email est nécessaire pour :
- La confirmation d'inscription (vérification)
- La réinitialisation du mot de passe
- Les notifications et les newsletters
- Les alertes système
Nodemailer simplifie ce processus en fournissant une API unique pour tous les services de messagerie.
Installation
npm install nodemailernpm install -D @types/nodemailerPour TypeScript, installez impérativement le package contenant les types.
Fonctionnalités principales
- Transport SMTP — envoi via n'importe quel serveur SMTP (Gmail, Mail.ru, Yandex, AWS SES).
- HTML et texte — prise en charge des e-mails en texte brut et en HTML.
- Pièces jointes — fichiers, images, Buffer, flux.
- Modélisation — intégration avec handlebars, pug et autres.
- Flux — envoi de fichiers volumineux sans les charger en mémoire.
- Pool de connexions — amélioration des performances pour les envois en masse.
Exemple de code en TypeScript
import nodemailer from 'nodemailer';
interface MailOptions { to: string; subject: string; text?: string; html?: string;}
async function sendEmail(options: MailOptions): Promise<void> { // Création du transport (exemple pour Gmail) const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'your-email@gmail.com', pass: 'your-app-password' } });
// Paramètres de l'email const mailData = { from: 'your-email@gmail.com', to: options.to, subject: options.subject, text: options.text || '', html: options.html || undefined };
// Envoi const info = await transporter.sendMail(mailData); console.log('Email envoyé :', info.messageId);}
// UtilisationsendEmail({ to: 'user@example.com', subject: 'Bonjour depuis TypeScript !', html: '<h1>Bienvenue</h1><p>Ceci est un email de test.</p>'});Quand utiliser Nodemailer
La bibliothèque est adaptée pour :
- Tout projet Node.js/TypeScript nécessitant l'envoi d'email.
- Les prototypes et MVP — configuration rapide via Gmail.
- Les systèmes de production — avec des services transactionnels (SendGrid, Mailgun).
- Les microservices et le serverless (Lambda, Cloud Functions).
Il n'est pas recommandé d'utiliser Nodemailer pour les envois massifs de spam — des ESP (Email Service Providers) spécialisés existent pour cela.
Conclusion
Nodemailer est une bibliothèque mature, stable et bien documentée. Grâce aux types TypeScript, vous bénéficiez de l'autocomplétion et de la vérification des erreurs à la compilation. C'est le choix idéal pour l'envoi d'email dans l'écosystème JavaScript/TypeScript.