Tester des e-mails dans un environnement de développement local peut s’avérer difficile. Il est souvent compliqué de déterminer si les e-mails sortants de votre site ou de votre application web parviennent effectivement à la boîte de réception du destinataire. C’est là que MailHog entre en jeu !
MailHog représente un outil de test d’e-mails qui simplifie grandement l’installation et la configuration d’un serveur d’e-mail local. Ce programme met en place un faux serveur SMTP. Vous avez la possibilité de paramétrer vos applications web préférées pour qu’elles utilisent le serveur SMTP de MailHog, facilitant ainsi l’envoi et la réception d’e-mails.
Prenons l’exemple de la configuration d’un site WordPress local pour qu’il utilise MailHog et ainsi tester l’envoi d’e-mails.
Dans cet article, vous découvrirez tous les détails essentiels de MailHog, de l’installation à la configuration, en passant par les procédures de test d’e-mails locaux, et bien plus encore !
Êtes-vous prêt à plonger dans les détails? Suivez notre guide complet pour exploiter MailHog et simplifier vos tests d’e-mails en environnement de développement local.
Sommaire
Qu’est-ce que MailHog?
MailHog est un outil open source de test d’e-mails principalement conçu pour les développeurs. Son objectif est de faciliter les tests d’envoi et de réception d’e-mails pour les applications web.
Développé en langage de programmation Go, MailHog est compatible avec divers systèmes d’exploitation, tels que Windows, Linux, FreeBSD et macOS. Maintenu par Ian Kent, il est distribué sous la licence MIT, offrant ainsi la liberté de déploiement tant pour des utilisations personnelles que commerciales.
Pourquoi utiliser MailHog?
MailHog résout de nombreux problèmes inhérents aux tests d’e-mails.
Supposons que vous développez un site WordPress en environnement local. Tester un formulaire de contact ou tout autre e-mail peut s’avérer difficile. Le serveur SMTP par défaut de l’application web ne fonctionne généralement pas dans un environnement local, et configurer l’envoi d’e-mails peut être fastidieux.
MailHog résout ces problèmes en mettant en place un faux serveur SMTP. Vous pouvez le configurer pour que votre application web utilise ce serveur, simplifiant ainsi l’envoi et la réception d’e-mails. MailHog stocke même ces e-mails dans une interface utilisateur web conviviale, permettant une visualisation facile.
Fonctionnalités de MailHog
Les fonctionnalités de MailHog incluent :
Léger et portable : Pas besoin d’installation, facilitant la portabilité sur divers systèmes.
Support SMTP étendu : Possibilité de mettre en place un serveur ESMTP avec prise en charge de SMTP AUTH et PIPELINING.
Support API : Utilisation de l’API HTTP intégrée pour récupérer, lister et supprimer des e-mails.
Test d’échec : Simulation de problèmes de délivrabilité pour tester votre application web.
Mises à jour en temps réel : Utilisation de l’interface EventSource pour des mises à jour instantanées.
Capture et stockage des e-mails : Stockage des e-mails capturés dans une base de données MongoDB ou un système de stockage basé sur des fichiers.
Téléchargement des fichiers joints : Prise en charge du téléchargement de parties MIME individuelles.
Interface Web : Visualisation des e-mails en texte brut, en HTML ou en source avec prise en charge du format MIME en plusieurs parties et des en-têtes codés.
Authentification : Support de l’authentification HTTP basique pour l’interface utilisateur et l’API.
Libération des e-mails capturés : Configuration pour libérer les e-mails capturés vers de véritables serveurs SMTP en vue de leur distribution.
Outre ces fonctionnalités, MailHog propose des bibliothèques clientes pour PHP et NodeJS, facilitant l’interaction avec son API.
Déployer MailHog sur différentes plateformes
Bien que MailHog ne nécessite pas d’installation, vous devez le télécharger et le configurer dans votre environnement de développement. Voici comment le déployer sur différentes plateformes.
MailHog sur Windows
- Rendez-vous sur la [page des versions de MailHog sur GitHub](https://github.com/mailhog/MailHog/releases) pour télécharger la dernière version stable pour Windows. Téléchargez la version pré-compilée pour Windows.
Note : Au moment de la rédaction de cet article, la version 1.0.1 est la dernière disponible.
- Une fois le fichier .exe téléchargé, exécutez-le. Si des alertes de sécurité apparaissent, autorisez l’exécution de MailHog sans restrictions de pare-feu.
- Accédez à localhost:8025 ou 127.0.0.1:8025 dans votre navigateur pour accéder à l’interface utilisateur de MailHog Web.
Vous ne verrez probablement pas d’e-mails répertoriés, car aucune application web n’est encore configurée pour utiliser MailHog. Cette configuration sera abordée plus loin dans l’article.
MailHog sur Linux (Ubuntu/Debian)
Si vous utilisez Linux (Ubuntu/Debian), voici comment 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 permet d’installer le langage de programmation Golang sur votre environnement de développement, à condition qu’il ne soit pas déjà installé. Si vous avez déjà Golang, vous pouvez ignorer cette ligne. La commande suivante installe git sur votre machine, et vous pouvez également la négliger si git 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, pour démarrer MailHog, vous pouvez exécuter la commande “/path/to/MailHog” dans votre terminal. Le chemin exact peut varier en fonction de votre version de Linux. Par exemple, si les fichiers bin de Go sur Ubuntu sont stockés dans le répertoire ~/go/bin/, vous pouvez utiliser le code suivant pour démarrer MailHog : suivante :
~/go/bin/MailHog
Si vous souhaitez démarrer MailHog automatiquement à chaque connexion, vous avez la possibilité de le configurer en tant que service démon en utilisant supervisord, upstart, ou d’autres méthodes. Vous pouvez également opter pour l’utilisation du script init ou du rôle Ansible fourni par geerlingguy pour accomplir la même tâche.
Similairement à l’environnement Windows, vous pouvez observer que le serveur SMTP démarre sur le port 1025 et le serveur HTTP sur le port 8025.
Pour accéder à l’interface utilisateur de MailHog Web, ouvrez votre navigateur web et rendez-vous sur localhost:8025 ou 127.0.0.1:8025.
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 installera 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:1025 -p 8025:8025 mailhog/mailhog
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.
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/mhsendmail_linux_amd64
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. 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`.
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`.
Vous pouvez vérifier si l’e-mail a bien été livré en vous rendant sur l’interface utilisateur web de MailHog.
Vous pouvez également cliquer sur l’e-mail de test pour vérifier son contenu.
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" -Subject "Hello, MailHog!" -SmtpServer "localhost" -Port 1025
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.
En résumé, MailHog offre une solution pratique pour simplifier le processus de test des e-mails sur votre site web ou votre application. Son installation est accessible sur diverses plates-formes populaires, et son interface utilisateur web conviviale facilite la visualisation des e-mails envoyés et reçus.
Avec l’utilisation de MailHog, le test des e-mails en environnement local devient remarquablement simple et efficace.