Archives Wild Code School
Node.js

Node 05 - 💌 Envoyer un email

QuĂȘte 5 sur 6 · 1 image archivĂ©e

⚠ Avant de commencer cette quĂȘte, nous te recommandons de jeter un coup d'Ɠil Ă  celle-ci :
QuĂȘtes liĂ©es

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.

image

đŸ€“ 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.

bash
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 :

bash
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

  1. 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).
  2. 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_USER et SMTP_PASSWORD dans ton fichier .env.
  3. 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 :

bash
npm install nodemailer

Crée un fichier mailer.js et initialise un objet transporter que tu vas exporter :

js
// 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.

javascript
// 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 :

bash
node sendEmail.js

Et voilĂ  !

↗
Nodemailer

Documentation officielle de Nodemailer

nodemailer.com

đŸ’Ș 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