OUJOOD.COM
Qu'est-ce que Nodemailer ?
Nodemailer est un module Node.js open-source conçu pour simplifier l'envoi d'emails depuis une application serveur. Il prend en charge une variété de fonctionnalités, telles que l'envoi d'emails en texte brut, en HTML, avec des pièces jointes, et la configuration de serveurs SMTP personnalisés. C'est un outil essentiel pour les développeurs qui souhaitent intégrer une fonctionnalité d'emailing dans leurs applications.
Installation de Nodemailer
Pour commencer, vous devez installer Nodemailer via npm. Ouvrez votre terminal et exécutez la commande suivante :
npm install nodemailer
Cette commande ajoutera Nodemailer comme dépendance dans votre projet Node.js.
Exemple de base : Envoi d'un email simple
Voici un exemple de code pour envoyer un email simple en utilisant Gmail comme service SMTP :
const nodemailer = require('nodemailer');
// Configuration du transporteur SMTP
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'youremail@gmail.com', // Remplacez par votre adresse Gmail
pass: 'yourpassword' // Remplacez par votre mot de passe Gmail
}
});
// Options de l'email
const mailOptions = {
from: 'youremail@gmail.com', // Expéditeur
to: 'myfriend@yahoo.com', // Destinataire
subject: 'Test Email', // Objet de l'email
text: 'Cet email est envoyé depuis Node.js avec Nodemailer.' // Corps de l'email en texte brut
};
// Envoi de l'email
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log('Erreur lors de l\'envoi :', error);
} else {
console.log('Email envoyé avec succès :', info.response);
}
});
Explication : Ce script configure un transporteur SMTP en utilisant Gmail. Il prépare un email avec un expéditeur, un destinataire, un objet et un corps de message, puis l'envoie. Le statut de l'envoi est affiché dans la console.
Exemple avancé : Envoi d'un email avec pièce jointe
Nodemailer permet également d'envoyer des emails avec des pièces jointes. Voici un exemple :
const nodemailer = require('nodemailer');
const path = require('path');
const fs = require('fs');
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'youremail@gmail.com',
/*Utilisez votre mot de passe ou un mot de passe
d'application généré via votre compte Google*/
pass: 'yourpassword'
}
});
// Chemin absolu vers le fichier PDF dans le dossier "Documents"
const filePath = path.join('C:/Users/VotreNomUSER/Documents', 'document.pdf');
// Vérifiez que le fichier existe avant d'envoyer l'email
if (fs.existsSync(filePath)) {
const mailOptions = {
from: 'youremail@gmail.com', // L'adresse de l'expéditeur
to: 'destinataire@hotmail.com', // L'adresse du destinataire
subject: 'Test Email', // L'objet de l'email
// Contenu de l'email en texte brut
text: 'Cet email est envoyé depuis Node.js avec Nodemailer.',
// la piéde jointe
attachments: [
{
filename: 'document.pdf', // Nom du fichier
path: filePath // Chemin vers le fichier
}
]
};
// Vérification du transporteur SMTP
transporter.verify((error, success) => {
if (error) {
console.error('Erreur de configuration du transporteur SMTP :', error);
} else {
console.log('Transporteur SMTP prêt pour l\'envoi d\'emails.');
// Envoi de l'email
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.error('Erreur lors de l\'envoi :', error);
} else {
console.log('Email envoyé avec succès :', info.response);
}
});
}
});
} else {
console.error('Fichier introuvable :', filePath);
}
Explication Simplifiée du Code : Nodemailer avec Pièce Jointe
1. Importation des modules nécessaires
const nodemailer = require('nodemailer');
const path = require('path');
const fs = require('fs');
nodemailer : Permet d'envoyer des emails via Node.js.
path : Gère les chemins de fichiers/dossiers.
fs : Manipule les fichiers sur le système.
2. Création d'un transporteur SMTP
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'youremail@gmail.com',
pass: 'yourpassword'
}
});
createTransport configure l'envoi d'emails via Gmail.
⚠️ Utilisez un mot de passe d'application pour des raisons de sécurité.
3. Chemin vers le fichier à envoyer
const filePath = path.join('C:/Users/VotreNomUSER/Documents', 'document.pdf');
Utilise path.join pour construire un chemin vers le fichier à joindre.
4. Vérification de l'existence du fichier
if (fs.existsSync(filePath)) {
fs.existsSync vérifie si le fichier existe avant l'envoi.
5. Définition des options de l'email
const mailOptions = {
from: 'youremail@gmail.com',
to: 'destinataire@hotmail.com',
subject: 'Test Email',
text: 'Cet email est envoyé depuis Node.js avec Nodemailer.',
attachments: [
{
filename: 'document.pdf',
path: filePath
}
]
};
Définissez l'expéditeur, le destinataire, le sujet, le texte de l'email, et les fichiers joints.
6. Vérification du transporteur SMTP
transporter.verify((error, success) => {
if (error) {
console.error('Erreur de configuration du transporteur SMTP :', error);
} else {
console.log('Transporteur SMTP prêt pour l\'envoi d\'emails.');
}
});
Vérifie que le transporteur SMTP est configuré correctement.
7. Envoi de l'email
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.error('Erreur lors de l\'envoi :', error);
} else {
console.log('Email envoyé avec succès :', info.response);
}
});
Envoie l'email avec les options définies. Affiche un message en cas de succès ou d'erreur.
8. Gestion des erreurs de fichier
} else {
console.error('Fichier introuvable :', filePath);
}
Si le fichier à envoyer n'existe pas, un message d'erreur est affiché.
Résumé
Ce code utilise Nodemailer pour envoyer un email avec une pièce jointe. Il vérifie l'existence du fichier avant de l'envoyer et utilise une configuration Gmail pour transmettre l'email.
Configuration SMTP personnalisée
Si vous utilisez un service SMTP autre que Gmail, vous pouvez configurer Nodemailer comme suit :
const transporter = nodemailer.createTransport({
host: 'smtp.votreserveur.com', // Remplacez par l'hôte SMTP
port: 587, // Port SMTP (souvent 587 pour TLS)
secure: false, // true pour le port 465, false pour les autres
auth: {
user: 'votreemail@domaine.com',
pass: 'votremotdepasse'
}
});
Explication : Cette configuration permet d'utiliser un serveur SMTP personnalisé. Vous devez fournir l'hôte, le port, et les informations d'authentification.
Envoyer un e-mail HTML
Pour envoyer du texte formaté en HTML dans votre e-mail, utilisez la propriété "html" au lieu de la propriété "text" :
Voici un exemple de script pour envoyer un e-mail au format HTML :
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'votreemail@gmail.com',
pass: 'votremotdepasse'
}
});
const mailOptions = {
from: 'votreemail@gmail.com',
to: 'destinataire@gmail.com',
subject: 'Envoi d\'e-mail avec Node.js',
html: '<h1>Bienvenue</h1><p>C\'était facile !</p>'
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.error('Erreur :', error);
} else {
console.log('E-mail envoyé :', info.response);
}
});
Explication du Code
1. Importation de Nodemailer
const nodemailer = require('nodemailer');
Ce code importe la bibliothèque nodemailer, qui facilite l'envoi d'emails par Node.js.
2. Création d'un Transporteur
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'votreemail@gmail.com',
pass: 'votremotdepasse'
}
});
Ici, on configure un transporteur Gmail. Remplacez 'votreemail@gmail.com' et 'votremotdepasse' par vos informations personnelles.
3. Définir les Options de l'Email
const mailOptions = {
from: 'votreemail@gmail.com',
to: 'destinataire@gmail.com',
subject: 'Envoi d\'e-mail avec Node.js',
html: '<h1>Bienvenue</h1><p>C\'était facile !</p>'
};
On définit ici le contenu et les destinataires de l'email. Le contenu HTML est entièrement personnalisable.
4. Envoi de l'Email
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.error('Erreur :', error);
} else {
console.log('E-mail envoyé :', info.response);
}
});
Cette fonction envoie l'email en affichant les éventuelles erreurs ou un message de confirmation.
Remarque
Pour sécuriser vos informations de connexion, utilisez des variables d'environnement. Cela empêche l'exposition de vos données sensibles dans le code source.
Conclusion
Envoyer des e-mails HTML avec Node.js est simple et rapide grâce à Nodemailer. Vous pouvez personnaliser vos e-mails en ajoutant des images, des styles CSS et bien plus encore. Expérimentez pour adapter cette fonctionnalité à vos besoins spécifiques.
Fonctionnalités principales de Nodemailer
- Support des emails HTML et en texte brut
- Envoi d'emails avec pièces jointes
- Compatibilité avec plusieurs services (Gmail, Outlook, Yahoo, etc.)
- Configuration SMTP personnalisée
- Support des templates pour personnaliser les emails
Conclusion
Nodemailer est un outil puissant et flexible pour envoyer des emails depuis une application Node.js. Que vous ayez besoin d'envoyer des emails simples, des emails avec pièces jointes, ou de configurer un serveur SMTP personnalisé, Nodemailer répond à tous vos besoins. En suivant les exemples ci-dessus, vous pouvez rapidement intégrer cette fonctionnalité dans vos projets.