Envoi d'email en JavaScript (Node.js) : nodemailer, sendgrid, mailgun
L'envoi d'email est l'une des fonctions clés des applications web modernes : inscription des utilisateurs, réinitialisation des mots de passe, notifications et campagnes marketing. Dans l'écosystème Node.js, il existe plusieurs solutions éprouvées qui permettent d'intégrer la fonctionnalité de messagerie en quelques minutes. Dans cet article, nous allons détailler trois outils populaires : nodemailer, sendgrid et mailgun. Vous apprendrez à configurer SMTP, à envoyer des courriels avec pièces jointes et modèles HTML, ainsi que les métriques à suivre.
1. Nodemailer — client SMTP universel
Nodemailer est la bibliothèque la plus populaire pour l'envoi d'email en Node.js. Elle prend en charge SMTP, SES, Sendmail et de nombreux transports. Principaux avantages :
- Configuration simple via un compte SMTP (Gmail, Yandex, Mail.ru).
- Prise en charge des pièces jointes, images intégrées, modèles HTML.
- Gestion des files d'attente et des pools de connexions.
- Envoi asynchrone via
async/await.
Installation et envoi de base
npm install nodemailerconst nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, // true pour le port 465 auth: { user: 'your-email@gmail.com', pass: 'your-password' // ou mot de passe d'application }});
const mailOptions = { from: '"Expéditeur" <your-email@gmail.com>', to: 'recipient@example.com', subject: 'Bonjour depuis Node.js !', text: 'Ceci est un email de test.', html: '<h1>Bonjour !</h1><p>Ceci est la version HTML.</p>'};
const sendMail = async () => { const info = await transporter.sendMail(mailOptions); console.log('Email envoyé :', info.messageId);};
sendMail().catch(console.error);Envoi avec pièces jointes
const mailOptions = { // ...champs principaux attachments: [ { filename: 'document.pdf', path: '/path/to/document.pdf' }, { filename: 'image.png', content: fs.createReadStream('/path/to/image.png') } ]};Important : pour Gmail, utilisez un mot de passe d'application ou OAuth2.
2. SendGrid — service cloud pour les courriels transactionnels
SendGrid (partie de Twilio) fournit une API puissante pour l'envoi d'email avec un taux de délivrabilité élevé. Convient aux startups et aux grands projets. Principales fonctionnalités :
- API avec clés d'accès (sans SMTP).
- Modèles dynamiques (Handlebars).
- Analytique : ouvertures, clics, désabonnements.
- Forfait gratuit jusqu'à 100 emails/jour.
Installation et envoi
npm install @sendgrid/mailconst sgMail = require('@sendgrid/mail');sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = { to: 'recipient@example.com', from: 'sender@example.com', subject: 'Email transactionnel', text: 'Texte de l\\'email', html: '<strong>Contenu HTML</strong>', attachments: [ { content: 'base64encodedcontent', filename: 'invoice.pdf', type: 'application/pdf', disposition: 'attachment' } ]};
sgMail.send(msg) .then(() => console.log('Email envoyé')) .catch(console.error);Utilisation des modèles dynamiques
const msg = { to: 'user@example.com', from: 'noreply@mysite.com', templateId: 'd-xxxxxxxxxxxxxxxx', dynamicTemplateData: { username: 'Ivan', orderLink: 'https://mysite.com/order/123' }};3. Mailgun — pour les hauts
Aussi dans la bibliothèque
Surveillance des applications Kotlin : bibliothèques et outils de suivi des performances
Configuration des applications Go : la bibliothèque viper
Génération de rapports PDF en JavaScript (Node.js) : Aperçu des bibliothèques et exemples de code
Newtonsoft.Json pour C# (.NET) : guide complet avec exemples