Nodemailer : Envoyer un mail avec nodemailer et le recevoir avec maildev

Prérequis pour envoyer un email avec nodemailer sous NodeJS

Installer nodemailer à partir de npm : https://www.npmjs.com/package/nodemailer

Pour recevoir le mail en local : https://github.com/maildev/maildev (Outils pratique à installer en global)

Recevoir le mail en local avec maildev

Pour recevoir le mail avec maildev, il faut d’abord lancer maildev après l’avoir installé en global (npm i maildev -g), ensuite aller dans une invite de commande de taper maildev

Envoyer le mail avec nodemailer 

Il vous faudra importer nodemailer avec la commande require.

Ensuite créer un transporter avec les infos de développement ou production (à vous de les définir) pour développements nous envoyons en local à maildev (Voir options transporter).

Ensuite nous définissons les options du mail à savoir, de qui vient le mail, à qui on l’envoi, le sujet, le format texte et HTML : Voir plus d’options

Lancez le script NodeJS et le mail partira (node index.js dans mon cas)

//Il faut importer nodemailer
const nodemailer = require('nodemailer')
//On se connecte au transporter avec différentes options en fonction de l'environnement
let transporter = null
if (process.env.NODE_ENV === 'prod') {
  transporter = nodemailer.createTransport({
    host: 'your host',
    port: 'your port',
    secure: false,
    auth: {
      user: 'the user of smtp',
      password: 'the password',
    },
  })
} else {
  transporter = nodemailer.createTransport({
    host: 'localhost',
    port: 1025,
    secure: false,
    tls: {
      // do not fail on invalid certs
      rejectUnauthorized: false,
    },
  })
}
// Fonction asynchrone pour attendre le retour
async function sendMail() {
  const mailOptions = {
    from: 'from@email.fr',
    to: 'to@email.fr',
    subject: 'Test email pour le tutoriel',
    text: "Voici le texte de l'email de test", //Le contenu de la version texte
    html:
      "<h1>HTML</h1><p>Voici le texte dans un paragraph pour l'email de test</p>", // Le contenu de la version HTML
  }
  await transporter.sendMail(mailOptions)
}
//On lance l'email
sendMail()

Voir le mail avec maildev

Lorsque vous lancez maildev avec l’invite de commande vous voyez ce message qui vous dis vers quel port pointe le SMTP serveur et où visualiser les mails, allez donc sur localhost:1080 pour voir l’interface de maildev

MailDev webapp running at http://0.0.0.0:1080
MailDev SMTP Server running at 0.0.0.0:1025

maildev interfaceVoici l’interface de maildev pour recevoir vos mails.

Le tutoriel est fini, merci pour votre lecture.