Node 05 - đ Envoyer un email
â ïž Avant de commencer cette quĂȘte, nous te recommandons de jeter un coup d'Ćil Ă celle-ci :
Il y a plusieurs façons d'envoyer des emails avec NodeJS. Dans cette quĂȘte, tu apprendras comment envoyer un email Ă quelqu'un en utilisant le paquet nodemailer avec un serveur SMTP.
SMTP est un protocole standardisé et largement utilisé pour l'envoi d'emails.
Comme la mise en place d'un serveur SMTP peut ĂȘtre trĂšs longue et dĂ©licate, nous allons utiliser un fournisseur de relais SMTP.

đ€ Au cours de cette quĂȘte, tu apprendras Ă :
â
Envoyer un email avec NodeJS
â
Te connecter Ă un serveur SMTP (MailJet) avec nodemailer.
Configurer une application node
Crée un dossier et initialise-le avec un projet node.
mkdir sending-mail-quest && cd sending-mail-quest
npm init -y
Crée un fichier .env pour stocker les informations d'accÚs au SMTP (n'oublie pas d'installer dotenv :wink:). Il ressemblera à ceci :
SMTP_HOST=in-v3.mailjet.com
SMTP_PORT=465
# Ici, il faut mettre la CLĂ API
SMTP_USER=123456789ab1234c56789d
# Ici, la CLĂ SECRĂTE
SMTP_PASSWORD=123456789ab1234c56789d
Concernant SMTP_USER et SMTP_PASSWORD, l'information sera disponible dans ton compte Mailjet -> Profil puis Préférences du compte -> ParamÚtres SMTP et Send API -> Récupérer mes identifiants API
Si la clé API n'est pas présente, il faut la créer !
Obtenir l'accĂšs Ă un relais SMTP
La mise en place d'un serveur SMTP peut s'avérer assez difficile, car de nombreuses configurations sont nécessaires pour délivrer correctement les emails.
Heureusement, il existe de nombreuses entreprises proposant des services d'envoi d'emails qui fonctionnent immédiatement (MailJet, SendinBlue, MailChimp, ...) et certaines d'entre elles proposent des plans qui incluent suffisamment d'emails pour que tu puisses t'entraßner gratuitement.
Dans cette quĂȘte, nous allons apprendre Ă accĂ©der Ă un relais SMTP avec MailJet, mais tu peux tout Ă fait choisir un autre fournisseur si tu le souhaites !
Configurer un relais SMTP MailJet
- Va sur la page d'inscription pour créer un compte sur MailJet (tu peux mettre ce que tu veux dans les champs de l'entreprise et du site web si tu n'en as pas).
- Une fois ton compte créé et ton email validé, va sur le guide pour envoyer ton premier email et choisis SMTP. Tu devrais voir le serveur SMTP ainsi que tes propres informations d'identification ici. Tu peux maintenant remplacer les valeurs
SMTP_USERetSMTP_PASSWORDdans ton fichier.env. - Enregistre l'adresse email qui sera utilisée comme expéditeur ici et n'oublie pas de la vérifier. Il peut s'agir de ton adresse personnelle ou de celle de la Wild Code School.
Installer nodemailer
Installons nodemailer. Exécute la commande suivante dans votre terminal :
npm install nodemailer
Crée un fichier mailer.js et initialise un objet transporter que tu vas exporter :
// mailer.js
// on importe les éléments dont on a besoin
require('dotenv').config();
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
host: process.env.SMTP_HOST,
port: process.env.SMTP_PORT,
secure: true,
auth: {
user: process.env.SMTP_USER,
pass: process.env.SMTP_PASSWORD,
},
});
module.exports = transporter;
à présent, tu vas créer un fichier sendEmail.js.
Pour envoyer un email, tu dois spécifier quelques informations essentielles, telles que le destinataire, l'expéditeur, le sujet et le message.
En ce qui concerne le message, il est possible de mettre le corps du message en HTML ou en texte brut. Si la boĂźte aux lettres n'affiche pas le HTML, le texte brut est utilisĂ© comme alternative. :warning: concernant l'adresse email d'expĂ©dition, ça doit ĂȘtre la mĂȘme que celle dĂ©finie ici.
// sendEmail.js
const mailer = require('./mailer');
mailer.sendMail(
{
from: 'myname@wildcodeschool.com',
to: 'my-personnal-email@gmail.com',
subject: 'This is a test email',
text: 'Hello world',
html: '<p>Hello <em>world</em></p>',
},
(err, info) => {
if (err) console.error(err);
else console.log(info);
}
);
N'hésite pas à tester ton projet comme suit :
node sendEmail.js
Et voilĂ !
Documentation officielle de Nodemailer
đȘ Challenge : Envoie-moi un email de temps en temps
Envoie un email avec node (de ton adresse personnelle à ton adresse Wild Code School ou l'inverse) et envoie une capture d'écran de l'email reçu en solution.
đ§ CritĂšres d'acceptation
- L'email a été envoyé avec succÚs
Ressources partagĂ©es sur cette quĂȘte
- Petit soucis, je pense qu'il faut rajouter une option pour l'exemple. MailJet n'autorise pas les certificats autosignés, donc il faut rajouter dans le .env une option NODE_TLS_REJECT_UNAUTHORIZED=0https://medium.com/@shahan953/nodemailer-mailgun-mailjet-integration-with-nodejs-web-application-9772dee22997
- Si vous rencontrez des problĂšmes avec MailJet (mail qui ne s'envoie pas, compte suspendu), utiliser plutĂŽt Sendinbluehttps://hackernoon.com/send-emails-from-nodejs-using-sendinblue-in-just-5-steps