Vous êtes sur la page 1sur 24

Comment utiliser MailHog pour

tester les e-mails localement


(guide étape par étape)

Downloaded on: 02 May 2024


Ship and manage your
web projects faster
Deploy your projects on Google Cloud Platform's top tier
infrastructure. You'll get 25+ data centers to choose
from, 24/7/365 expert support, and advanced security
with DDoS protection.

Try for free

Tester des e-mails dans un environnement de développement local peut être difficile. Il est
très difficile de savoir si les e-mails sortants de votre site ou de votre application web
atteignent réellement la boîte de réception du destinataire. Entrez dans MailHog !

MailHog est un outil de test d’e-mail qui permet d’installer et de configurer très facilement un
serveur d’e-mail local. MailHog met en place un faux serveur SMTP. Vous pouvez configurer
vos applications web préférées pour utiliser le serveur SMTP de MailHog pour envoyer et
recevoir des e-mails.

Par exemple, vous pouvez configurer un site WordPress local pour qu’il utilise MailHog pour
envoyer des e-mails. C’est exactement ce que fait DevKinsta pour propulser son serveur
SMTP intégré afin de tester les e-mails en local.

Dans cet article, vous apprendrez les tenants et aboutissants de MailHog, y compris son
installation, sa configuration, comment tester les e-mails en local, et bien plus encore !

Prêt à plonger dans le vif du sujet? Allons-y!

Vous préférez regarder la version vidéo ?


Qu’est-ce que MailHog?

— UI web MailHog

MailHog est un outil de test de-mail open source destiné principalement aux développeurs. Il
vous permet de tester plus efficacement les capacités d’envoi et de réception d’e-mail de
votre application web.

Construit avec le langage de programmation Go, MailHog peut être utilisé sur plusieurs
systèmes d’exploitation, dont Windows, Linux, FreeBSD et macOS. MailHog est maintenu par
Ian Kent et publié sous la licence du MIT, ce qui vous permet de le déployer librement pour
des utilisations personnelles et commerciales.

Mais pourquoi avez-vous besoin de MailHog?

Pourquoi vous avez besoin de MailHog


MailHog résout un grand nombre des problèmes majeurs des tests d‘e-mail.
Supposons que vous développez un site web WordPress dans un environnement de
développement local. Si vous souhaitez tester un formulaire de contact ou tout autre e-mail,
la tâche peut être ardue.

Généralement, le serveur SMTP par défaut de l’application web se charge de cette tâche.
Dans un environnement de développement local, il ne fonctionne presque jamais pour de
multiples raisons.

Vous pouvez lire notre guide détaillé sur les serveurs SMTP gratuits pour en savoir plus sur le
fonctionnement d’un serveur SMTP.

— Comment fonctionne un serveur SMTP (Source : Wikimedia Commons)

Tout d’abord, vous devez configurer votre système d’exploitation, votre serveur web et votre
application web pour permettre l’envoi d’e-mails dans un environnement local. Ensuite, vous
devez vous assurer que les e-mails arrivent bien dans la boîte de réception de votre
destinataire, ce qui peut vous faire perdre du temps.

Et puis il y a la question de l’utilisation d’une véritable adresse e-mail pour les tests. Cela peut
nuire à la crédibilité de votre e-mail privé.

MailHog résout tous les problèmes mentionnés ci-dessus. Il met en place un faux serveur
SMTP que vous pouvez configurer pour que votre application web puisse envoyer et recevoir
des e-mails. Il stocke même les e-mails envoyés et reçus dans une interface utilisateur web
très pratique, de sorte que vous pouvez les parcourir comme vous le feriez avec une vraie
boîte de réception.

Enfin, MailHog vous permet également de récupérer ces e-mails grâce à une API pour des
tests automatisés. C’est une fonction puissante, et la façon dont vous utilisez l’API dépend de
vous.

Fonctionnalités de MailHog
MailHog est équipé de nombreuses fonctionnalités prêtes à l’emploi. Voici quelques-unes de
ses principales fonctionnalités :

Léger et portable : Vous n’avez pas besoin d’installer MailHog pour l’utiliser. C’est l’un
des principaux avantages de MailHog. Cela le rend très portable pour l’utiliser sur
presque tous les systèmes d’exploitation ou serveurs web.
Support SMTP étendu : Non seulement MailHog supporte la mise en place d’un faux
serveur SMTP, mais vous pouvez également l’utiliser pour mettre en place un serveur
ESMTP (Extended SMTP). Il comprend également le support pour SMTP AUTH et
PIPELINING.
Support d’API : Vous pouvez utiliser l’API HTTP intégrée de MailHog (ou l’API JSON)
pour récupérer, lister et supprimer des e-mails.
Test d’échec : Vous pouvez inviter Jim, le Singe du Chaos de MailHog (oui, c’est bien
son nom) à la fête pour tester la délivrabilité de votre application web. Pour ce faire, il
crée de manière aléatoire des problèmes courants de délivrabilité d’e-mail, tels que les
connexions/authentifications rejetées et les connexions limitées.
Mises à jour en temps réel : MailHog utilise l’interface web EventSource pour fournir
des mises à jour instantanées.
Capture et stockage des e-mails : Les e-mails capturés peuvent être stockés dans un
système de stockage de messages en mémoire et persister dans une base de données
MongoDB et un système de stockage basé sur des fichiers.
Télécharger les fichiers jointes : MailHog prend en charge le téléchargement de
parties MIME individuelles.
UI Web : Vous pouvez utiliser l’interface web de MailHog pour visualiser les e-mails en
texte brut, en HTML ou la source. Elle prend également en charge le format MIME en
plusieurs parties et les en-têtes codés.
Authentification : MailHog prend en charge l’authentification HTTP basique pour son
interface utilisateur et son API.
Libérer les e-mails capturés : Vous pouvez configurer MailHog pour libérer les e-mails
capturés vers de véritables serveurs SMTP en vue de leur distribution.

— Jim est le « singe du chaos » de MailHog

Outre les fonctionnalités ci-dessus, MailHog dispose actuellement de deux bibliothèques


clientes pour les environnements PHP et NodeJS afin d’interagir facilement avec l’API
MailHog.

Déployer MailHog sur différentes plateformes


Comme mentionné précédemment, MailHog n’a pas besoin d’être installé. Cependant, vous
devez le télécharger et l’installer dans votre environnement de développement.
Commençons par télécharger MailHog. Ensuite, nous vous montrerons comment le mettre en
place sur différentes plateformes. Il existe de nombreuses façons de le faire.

MailHog sur Windows

Tout d’abord, rendez-vous sur la page des versions de MailHog sur GitHub pour télécharger
sa dernière version stable pour Windows. Après avoir.

— Page Giuthub des versions de MailHog

Note : Au moment de la rédaction de cet article, MailHog 1.0.1 est la dernière version
disponible. Vous pouvez la télécharger pré-compilée pour les plateformes Windows, Linux et
Darwin (macOS). Si vous utilisez une plateforme de niche, vous pouvez également
télécharger son code source et le compiler pour votre cas d’utilisation spécifique.

Comme MailHog pour Windows est un simple programme auto-exécutable, vous pouvez
simplement exécuter le fichier .exe téléchargé. Si vous recevez des alertes de sécurité,
assurez-vous d’autoriser MailHog à s’exécuter sur votre environnement local sans restrictions
de pare-feu.

Voici à quoi ressemble MailHog sur Windows 10.

— MailHog fonctionnant sous Windows 10

Vous pouvez voir que le serveur SMTP se trouve sur le port 1025 et le serveur HTTP sur le
port 8025.

Rien de bien compliqué encore, mais cela confirme que MailHog fonctionne sur votre
système.

Vous pouvez maintenant vous rendre sur localhost:8025 ou 127.0.0.1:8025 dans


votre navigateur web pour voir l’interface utilisateur de MailHog Web.
— UI Web de MailHog sur Windows

Vous ne pouvez pas encore trouver d’e-mail dans cette liste, car nous n’avons configuré
aucune de nos applications web pour utiliser MailHog. Nous en parlerons plus loin dans cet
article.

MailHog sur Linux

Si vous utilisez Linux (Ubuntu/Debian), voici comment vous pouvez déployer MailHog :

sudo apt-get -y install golang-go


sudo apt-get install git
go install github.com/mailhog/MailHog

La première commande Linux installe le langage de programmation Golang sur votre


environnement de développement (si vous ne l’avez pas déjà). Vous pouvez ignorer cette
ligne si vous avez déjà installé Go. La commande suivante installe git sur votre machine
(vous pouvez également ignorer cette ligne si il est déjà installé).

La troisième commande utilise la directive Go pour obtenir la dernière version stable de


MailHog à partir de son dépôt GitHub.

Ensuite, vous pouvez lancer /path/to/MailHog sur votre terminal pour démarrer MailHog.
Le chemin exact peut varier en fonction de votre version de Linux. Comme les fichiers bin de
Go sur Ubuntu sont stockés dans le répertoire ~/go/bin/, vous pouvez exécuter le code ci-
dessous pour démarrer MailHog :

~/go/bin/MailHog

C’est à peu près tout. MailHog fonctionne maintenant sur votre machine Linux. Voici à quoi
cela ressemble.

— MailHog fonctionnant sous Linux (Ubuntu)

Si vous voulez démarrer MailHog automatiquement à chaque connexion, vous pouvez le


configurer pour qu’il démarre comme un service démon en utilisant supervisord, upstart, etc.
Vous pouvez également utiliser le script init ou le rôle Ansible fourni par geerlingguy pour
faire la même chose.
Tout comme sous Windows, vous pouvez voir que le serveur SMTP démarre sur le port 1025
et le serveur HTTP sur le port 8025.

Rendez-vous sur localhost:8025 ou 127.0.0.1:8025 dans votre navigateur web pour


voir l’interface utilisateur de MailHog Web.

— Interface utilisateur web de MailHog sous Linux (Ubuntu)

MailHog sur macOS

Les utilisateurs d’Apple peuvent installer MailHog en utilisant Homebrew. Ouvrez votre
terminal et exécutez la commande suivante :

brew install mailhog

Cela permettra d’installer MailHog sur votre macOS. Ensuite, vous pouvez démarrer MailHog
avec :
mailhog

Si vous souhaitez que MailHog se lance automatiquement à l’ouverture de session et


fonctionne en arrière-plan, vous pouvez exécuter la commande suivante :

brew services start mailhog

C’est à peu près tout. MailHog est maintenant installé sur votre macOS. Vous pouvez
consulter son interface web en vous rendant sur 127.0.0.1:8025 ou localhost:8025
dans votre navigateur.

MailHog sur Docker

Docker est l’un des moyens les plus simples de mettre en place MailHog sur n’importe quelle
plateforme.

Tout d’abord, assurez-vous que Docker est bien installé sur votre machine. Ensuite, vous
pouvez lancer MailHog directement à partir de Docker Hub en exécutant la commande
suivante:

docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhog

Décomposons la commande ci-dessus et ses directives :

docker run démarre un conteneur docker.


La directive -d lance le conteneur docker en arrière-plan.
Les directives -p 1025:1025 et -p 8025:8025 exposent les ports SMTP par défaut
de MailHog pour vos ports locaux.
mailhog/mailhog récupère la dernière version de MailHog de Docker Hub.

Alternativement, si vous voulez monter le Maildir de MailHog sur votre système de fichiers
local (au lieu de le mettre dans un conteneur Docker), vous pouvez lancer la commande
suivante :

docker run -d -e "MH_STORAGE=maildir" -v $PWD/maildir:/maildir -p 1025:102

Comme auparavant, vous pouvez vous rendre sur localhost:8025 ou 127.0.0.1:8025


dans votre navigateur pour utiliser l’interface utilisateur de MailHog Web.

MailHog sur Docker Compose

Docker Compose est une extension de Docker qui permet de gérer facilement plusieurs
conteneurs Docker avec une seule commande. Pour cela, vous devez définir tous les
conteneurs que vous souhaitez exécuter dans un fichier YAML.

Par défaut, Docker Compose vous demande de nommer ce fichier comme ceci: docker-
compose.yaml.

Pour faire fonctionner MailHog avec Docker Compose, voici à quoi doit ressembler votre
fichier docker-compose.yaml:

version: "3"
services:
mailhog:
image: mailhog/mailhog:latest
restart: always
ports:
- 1025:1025
- 8025:8025

Dans le dossier où se trouve ce fichier, exécutez la commande suivante pour lancer MailHog
en arrière-plan:

docker-compose up -d mailhog

Cela fonctionne exactement comme avec Docker. Sauf qu’ici, vous n’avez pas besoin de
mentionner beaucoup de directives car vous les avez déjà définies.

Vous pouvez maintenant saisir localhost:8025 ou 127.0.0.1:8025 dans votre


navigateur pour afficher l’interface utilisateur de MailHog Web.

En plus des méthodes ci-dessus, le repo GitHub de MailHog comprend également un guide
pour le déploiement de MailHog sur AWS Elastic Beanstalk.

Configurer MailHog avec mhsendmail


MailHog redirige les e-mails des applications web vers son serveur SMTP en utilisant
mhsendmail, un remplacement de sendmail créé spécifiquement pour MailHog. Il garantit
que les e-mails de votre application web sont envoyés et reçus en utilisant le serveur SMTP
localhost:1025, que MailHog est configuré pour gérer par défaut.

Pour commencer, vous devez télécharger et installer mhsendmail. Selon votre plateforme,
vous pouvez l’aborder de différentes manières.
Par exemple, si vous utilisez Ubuntu, vous pouvez télécharger mhsendmail depuis son
dépôt GitHub en utilisant la commande suivante:

wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsend

Ensuite, rendez ce fichier exécutable et déplacez-le dans votre répertoire utilisateur. Pour ce
faire, utilisez la commande suivante:

sudo chmod +x mhsendmail_linux_amd64


sudo mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail

Vous pouvez également obtenir mhsendmail sur Golang ou Homebrew en exécutant cette
commande:

go install github.com/mailhog/mhsendmail

Assurez-vous que Go est installé avant d’exécuter la commande ci-dessus. Si vous êtes sous
Linux, reportez-vous à la section MailHog sous Linux ci-dessus. Pour installer Go avec
Homebrew, exécutez la commande suivante:
brew install go

Une fois mhsendmail téléchargé, vous pouvez procéder à son installation:

go install github.com/mailhog/mhsendmail

Ensuite, vous devez configurer votre application web pour utiliser mhsendmail de MailHog
comme service de routage d’e-mail. La plupart des systèmes Linux sont configurés pour
utiliser sendmail par défaut.

Vous pouvez le faire en modifiant votre fichier php.ini. Sur la plupart des serveurs, vous
trouverez le fichier php.ini dans le répertoire racine. Vous pouvez également exécuter la
commande suivante pour savoir où il se trouve:

php -i | grep 'php.ini'

Pour les machines Linux fonctionnant sous Ubuntu, vous devez définir la valeur de
sendmail_path sur :

sendmail_path = /usr/local/bin/mhsendmail
Au lieu de la valeur ci-dessus, vous pouvez également utiliser la valeur indiquée ci-dessous
pour obtenir le même résultat :

sendmail_path = /usr/sbin/sendmail -S mail:1025

Si vous avez utilisé Go pour installer mhsendmail, ou si vous utilisez une autre variante de
Linux, le chemin peut varier légèrement en fonction de votre plateforme/configuration.
Assurez-vous d’avoir un lien vers le répertoire mhsendmail approprié.

Les utilisateurs de Mac doivent modifier leur fichier de configuration Postfix pour configurer
MailHog correctement. Vous pouvez utiliser la configuration Postfix suivante :

myhostname = localhost
relayhost = [127.0.0.1]:1025

Pour les sites WordPress, vous pouvez utiliser l’extension gratuite MailHog for WordPress
pour router les e-mails de votre site vers MailHog. Pour l’utiliser, installez et activez
l’extension dans votre tableau de bord WordPress. Une meilleure alternative est d’utiliser
DevKinsta. Nous y reviendrons en détail plus tard.

Lisez la documentation de MailHog pour savoir comment le mettre en place sur d’autres
platesformes/configurations.

Options supplémentaires de configuration de MailHog

Vous pouvez configurer MailHog en utilisant ses différentes variables d’environnement ou ses
options de ligne de commande.
Par exemple, vous pouvez changer son nom d’hôte par défaut de mailhog.example en un
nom personnalisé en utilisant la variable d’environnement MH_HOSTNAME ou l’option de ligne
de commande -hostname.

Pour plus d’informations, vous pouvez consulter la documentation sur les options de
configuration de MailHog.

Test local d’e-mail avec MailHog


Enfin, testons notre configuration de MailHog pour voir si elle est correcte.

Vous pouvez envoyer un e-mail avec CLI depuis Mailhog en utilisant les directives
mhsendmail suivantes:

mhsendmail test@mailhog.local <<EOF


From: Salman <kinsta@mailhog.local>
To: Test <test@mailhog.local>
Subject: Hello, MailHog!

Hey there,
Missing you pig time.

Hogs & Kisses,


Salman
EOF

Dans le code ci-dessus, la directive <<EOF configure un délimiteur personnalisé afin que vous
puissiez saisir les détails de l’e-mail de test de manière interactive dans le terminal. Il exécute
toutes les entrées quand vous saisissez à nouveau le délimiteur. Ici, il envoie un e-mail en
utilisant la commande mhsendmail.
— Envoi d’un courriel de test en utilisant ‘mhsendmail’

Vous pouvez vérifier si l’e-mail a bien été livré en vous rendant sur l’interface utilisateur web
de MailHog.

— L’e-mail de test a bien été envoyé

Vous pouvez également cliquer sur l’e-mail de test pour vérifier son contenu.
— Vérification du contenu du corps de l’e-mail de test

C’est dans la boîte ! Nous pouvons maintenant conclure que MailHog a bien été configuré.

En plus de la méthode ci-dessus, il existe d’autres moyens d’envoyer un e-mail de test. Par
exemple, sous macOS, vous pouvez envoyer un e-mail de test en exécutant la commande
suivante dans votre terminal :

date | mail -s "Hello, MailHog!" test@mailhog.local

Sous Windows, vous pouvez envoyer un e-mail avec PowerShell en exécutant le code
suivant:

Send-MailMessage -To "test@mailhog.local" -From "salman@kinsta.com" -Subje


Vous pouvez également définir un script PHP avec toutes les données de l’e-mail et utiliser la
fonction mail() pour envoyer un e-mail de test. Pour cela, définissez votre script PHP
comme ci-dessous et exécutez-le depuis le terminal :

<?php
$to = "test@mailhog.local";
$subject = "Hey, I’m Pi Hog Pi!";
$body = "Hello, MailHog!";
$headers = "From: pihogpi@kinsta.com" . "\r\n";
mail($to,$subject,$body,$headers);
?>

Enfin, vous pouvez utiliser l’API de MailHog pour tester si un e-mail a bien été envoyé. Si
vous travaillez exclusivement dans un environnement non-GUI (par exemple un terminal
Linux ou Windows PowerShell), l’API MailHog est très pratique pour lister, récupérer et
supprimer des e-mails.

DevKinsta et MailHog: Tester sans problème des e-mail


en local
Notre outil de développement de WordPress en local, DevKinsta, utilise MailHog pour
alimenter ses fonctions de test d’e-mail. Comme il utilise également Docker pour contenir les
sites individuels, vous aurez une boîte de réception MailHog séparée pour chaque site local
que vous développez.
— La « boîte de réception d’e-mail » de DevKinsta est propulsée par MailHog

Comme pour l’interface Web de MailHog, vous pouvez utiliser la boîte de réception locale de
DevKinsta pour afficher et manipuler les e-mails (supprimer, marquer comme lu, voir la
source).
— Visualiser et manipuler les e-mails dans DevKinsta

Vous pouvez également vérifier les journaux MailHog de DevKinsta en exécutant la


commande Docker suivante :

docker logs -f devkinsta_mailhog

Pour plus d’informations, consultez la section de la base de connaissances de DevKinsta.

Résumé
Avec MailHog, tester les e-mails devient un jeu d’enfant. C’est une solution pratique pour
tester les e-mails de votre site web ou de votre application web. De plus, MailHog est simple
à mettre en place sur presque toutes les plateformes populaires et dispose d’une interface
utilisateur web facile à utiliser.

Comme MailHog, DevKinsta est un excellent moyen de démarrer le développement local de


WordPress. Non seulement il inclut MailHog pour tester les e-mails localement, mais il est
également préchargé avec Adminer pour une gestion facile de la base de données.

Avec MailHog (et DevKinsta) à vos côtés, vous constaterez que tester les e-mails en local n’a
jamais été aussi facile.

Si vous souhaitez partager votre expérience ou vos difficultés à tester les e-mails en local,
veuillez nous écrire dans la section des commentaires ci-dessous.

Vous aimerez peut-être aussi