Envoi d'email en JavaScript (Node.js) : guide complet
L'envoi d'emails est l'une des fonctions clés de toute application web moderne. Qu'il s'agisse de notifications, de confirmation d'inscription, de newsletters ou de réinitialisation de mot de passe — savoir envoyer des emails par programmation est essentiel pour tout développeur. Dans cet article, nous allons voir en détail comment organiser l'envoi d'email en JavaScript (Node.js) en utilisant des bibliothèques populaires, des configurations SMTP et les meilleures pratiques.
Pourquoi envoyer des emails depuis Node.js ?
Node.js est un environnement d'exécution JavaScript asynchrone, parfait pour traiter un grand nombre de requêtes. L'envoi d'emails via Node.js permet de :
- Automatiser les notifications utilisateur ;
- Intégrer les newsletters au backend ;
- Traiter les erreurs d'envoi en temps réel ;
- Utiliser un seul langage (JavaScript) pour tout le projet.
Bibliothèques principales pour l'envoi d'email dans Node.js
Aujourd'hui, il existe plusieurs bibliothèques éprouvées. Voici les plus populaires :
1. Nodemailer
Nodemailer est la norme de facto pour l'envoi d'emails dans Node.js. Cette bibliothèque prend en charge SMTP, les modèles intégrés, les pièces jointes, les emails HTML et OAuth2. Elle est gratuite et ne nécessite aucun service externe.
// Installation : npm install nodemailerconst nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({ host: 'smtp.example.com', port: 587, secure: false, // true pour le port 465 auth: { user: 'user@example.com', pass: 'your-password' }});
async function sendMail() { const info = await transporter.sendMail({ from: '"Expéditeur" <from@example.com>', to: 'to@example.com', subject: 'Bonjour depuis Node.js', text: 'Ceci est un email de test.', html: '<b>Ceci est un email de test.</b>' }); console.log('Email envoyé :', info.messageId);}sendMail().catch(console.error);2. SendGrid (via @sendgrid/mail)
SendGrid est un service cloud d'envoi d'emails de Twilio. La bibliothèque @sendgrid/mail permet d'envoyer facilement des emails via l'API SendGrid. Idéale pour les projets à grande échelle.
// Installation : 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: 'Envoi via SendGrid', text: 'Bonjour depuis SendGrid !', html: '<strong>Bonjour depuis SendGrid !</strong>'};
sgMail.send(msg) .then(() => console.log('Email envoyé')) .catch(error => console.error(error));3. Mailgun.js
Mailgun est un autre service populaire pour les développeurs. La bibliothèque mailgun.js offre une interface pratique pour envoyer des emails et gérer les newsletters.
// Installation : 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: 'Bonjour de Mailgun', text: 'Email de test via Mailgun.'}).then(msg => console.log(msg)).catch(err => console.error(err));Configuration SMTP pour l'envoi d'email
Si vous utilisez votre propre serveur de messagerie ou un compte Gmail/Yandex, vous devrez configurer SMTP. Voici un exemple pour Gmail :
const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'your@gmail.com', pass: 'your-app-password' // Utilisez un mot de passe d'application }}); Aussi dans la bibliothèque
Sérialisation d'objets en Swift (iOS/macOS) : Codable, JSON et PropertyList
fx pour Go : guide complet avec exemples
Mongoose Paginate JavaScript (Node.js) : guide complet avec exemples
Géolocalisation et cartes en C++ : aperçu des bibliothèques et outils