Tester l’envoi d’emails en développement local, c’est souvent compliqué. Faut-il configurer un vrai serveur SMTP ? Utiliser une adresse email jetable ? Comment vérifier que le contenu de l’email est correct sans spammer de vraies boîtes mail ?
Ces questions ralentissent le développement et ajoutent une complexité inutile. Vous avez besoin d’une solution simple pour capturer et visualiser les emails que votre application envoie. Cet article vous explique comment installer et utiliser MailHog, un outil open source qui simule un serveur SMTP pour intercepter tous vos emails de test.
Qu’est-ce que MailHog et pourquoi l’adopter ?
MailHog est un outil de test d’email. Il crée un faux serveur SMTP sur votre machine. Au lieu d’envoyer réellement les emails sur Internet, il les intercepte et les affiche dans une interface web. C’est un projet open source destiné principalement aux développeurs pour simplifier leur travail au quotidien.
Le principal avantage est la simplicité. Vous n’avez plus besoin de configurer un compte Gmail ou un autre service d’envoi pour vos tests. Vous dirigez simplement votre application vers MailHog, et le tour est joué. Vous pouvez trouver plus d’informations techniques sur son dépôt GitHub officiel.
- Installation rapide : Pas de dépendances compliquées, il fonctionne tout seul.
- Zéro configuration : Il écoute sur les ports SMTP par défaut, prêt à l’emploi.
- Interface web simple : Vous voyez tous les emails reçus en temps réel dans votre navigateur.
- Léger et portable : Écrit en langage Go, il consomme très peu de ressources.
- API intégrée : Permet d’automatiser les tests d’emails si besoin.
Comparé à d’autres outils comme MailCatcher, MailHog est souvent plus facile à mettre en place, notamment avec Docker. Il ne nécessite pas l’installation de Ruby ou d’autres environnements. C’est une solution autonome qui fonctionne immédiatement.
Installation de MailHog : La Méthode Adaptée à Votre Environnement
Il existe plusieurs manières d’installer MailHog. Le choix dépend de votre système d’exploitation et de vos outils habituels. Nous allons couvrir les méthodes les plus courantes. L’approche avec Docker est la plus recommandée car elle est universelle et propre.
Peu importe la méthode choisie, MailHog utilise deux ports par défaut :
- Port 1025 : C’est le port du serveur SMTP. Votre application doit envoyer ses emails à `localhost:1025`.
- Port 8025 : C’est le port de l’interface web. Vous y accédez via `http://localhost:8025` dans votre navigateur.
Méthode 1 : Avec Docker (la plus recommandée)
Si vous avez déjà Docker installé sur votre machine, c’est de loin la méthode la plus simple. Elle permet de lancer MailHog dans un conteneur isolé, sans « polluer » votre système.
Pour un lancement rapide, ouvrez votre terminal et exécutez cette seule commande :
Analysons cette ligne de commande :
--name mailhog: Donne un nom simple à votre conteneur.-p 1025:1025: Associe le port 1025 de votre machine au port 1025 du conteneur (pour le SMTP).-p 8025:8025: Associe le port 8025 de votre machine au port 8025 du conteneur (pour l’interface web).-d: Lance le conteneur en arrière-plan (detached mode).mailhog/mailhog: Utilise l’image officielle mailhog/mailhog disponible sur Docker Hub.
Pour intégrer MailHog à un projet existant qui utilise `docker-compose`, il suffit d’ajouter ce service à votre fichier `docker-compose.yml` :
Après avoir ajouté ce bloc, lancez simplement docker-compose up -d. Votre service MailHog démarrera en même temps que le reste de votre application. Vos autres conteneurs pourront alors communiquer avec le serveur SMTP en utilisant le nom de service `mailhog` comme hôte (`host`) sur le port 1025.
Méthode 2 : Sur macOS avec Homebrew
Pour les utilisateurs de macOS, Homebrew est un gestionnaire de paquets très pratique. L’installation de MailHog se fait avec une seule commande.
Ouvrez votre terminal et tapez :
Une fois l’installation terminée, vous pouvez lancer MailHog comme un service en arrière-plan. Cela garantit qu’il redémarrera automatiquement avec votre ordinateur.
MailHog est maintenant actif. Pour l’arrêter, il suffit de remplacer `start` par `stop`.
Méthode 3 : Sur Windows (avec le binaire)
Pour Windows, la méthode la plus directe consiste à télécharger le fichier exécutable (`.exe`).
- Allez sur la page « Releases » du projet MailHog sur GitHub.
- Cherchez la dernière version et téléchargez le fichier correspondant à votre architecture (par exemple, `MailHog_windows_amd64.exe`).
- Renommez le fichier en `MailHog.exe` pour plus de simplicité.
- Placez ce fichier dans un dossier de votre choix.
- Ouvrez une invite de commandes (cmd) ou un terminal PowerShell, naviguez jusqu’à ce dossier et lancez le programme :
Une fenêtre de terminal restera ouverte, affichant les logs de MailHog. Tant que cette fenêtre est ouverte, le service est actif. Si vous la fermez, MailHog s’arrête.
Méthode 4 : Depuis les sources avec Go
Si vous êtes un développeur Go ou si vous préférez compiler les outils depuis leurs sources, cette méthode est pour vous. Elle nécessite que l’environnement Go soit déjà installé sur votre système.
Si vous n’avez pas Go, vous devez d’abord installer Go en suivant la documentation officielle. Ensuite, l’installation de MailHog se fait avec une seule commande :
Cette commande télécharge les sources, les compile et place le binaire dans votre dossier `GOPATH/bin`. Assurez-vous que ce dossier est bien ajouté à votre variable d’environnement `PATH` pour pouvoir lancer MailHog de n’importe où.
Une fois le `PATH` configuré, vous pouvez démarrer le service en tapant simplement `MailHog` dans votre terminal.
Première Utilisation : Envoyer et Visualiser un Email de Test
Maintenant que MailHog est installé et lancé, il est temps de vérifier que tout fonctionne. La première étape est d’accéder à l’interface web.
Ouvrez votre navigateur et allez à l’adresse suivante : http://localhost:8025. Vous devriez voir une interface simple avec un message « Waiting for mail… ».
- Le port 1025 sert à recevoir les emails (c’est votre faux serveur SMTP).
- Le port 8025 sert à visualiser les emails (c’est l’interface web).
Pour envoyer un premier email de test sans avoir à configurer une application complète, on peut utiliser un client SMTP simple comme `telnet`. C’est une commande disponible sur la plupart des systèmes d’exploitation.
Ouvrez un nouveau terminal et suivez ces étapes. Copiez chaque ligne une par une.
Dès que vous tapez le point final et appuyez sur Entrée, retournez sur l’interface web de MailHog (`http://localhost:8025`). Votre email de test devrait apparaître instantanément. Vous pouvez cliquer dessus pour voir le contenu, les en-têtes et même une prévisualisation sur différents formats.
Intégrer MailHog avec vos Applications et Frameworks
Le but final est bien sûr de connecter votre propre application à MailHog. Le principe est toujours le même : configurer les paramètres SMTP de votre application pour qu’elle utilise `localhost` (ou `mailhog` si vous utilisez Docker Compose) comme hôte et `1025` comme port, sans chiffrement ni authentification.
Configurer MailHog pour WordPress
Par défaut, WordPress utilise la fonction `mail()` de PHP, qui n’est pas toujours simple à configurer. La meilleure méthode est d’utiliser un plugin SMTP comme « WP Mail SMTP ».
Après avoir installé et activé le plugin, allez dans ses réglages et configurez-le de cette manière :
- Mailer : Choisissez « Autre SMTP ».
- Hôte SMTP : `localhost` (ou `mailhog` si WordPress tourne dans un conteneur Docker).
- Chiffrement : Aucun.
- Port SMTP : `1025`.
- Authentification : Désactivée.
Enregistrez les modifications. Tous les emails envoyés par WordPress (notifications, réinitialisations de mot de passe, emails de formulaires) seront maintenant interceptés par MailHog.
Configurer MailHog pour Laravel
Avec Laravel, la configuration est encore plus simple car elle se gère dans le fichier d’environnement `.env`.
Ouvrez votre fichier `.env` à la racine de votre projet Laravel et modifiez les variables `MAIL_` comme ceci :
Laravel utilisera maintenant MailHog pour tous les envois d’e-mails. Aucune autre configuration n’est nécessaire.
Configurer MailHog avec PHP (fonction mail())
Si vous travaillez sur une application PHP plus ancienne ou qui utilise directement la fonction native `mail()`, la configuration demande une étape supplémentaire. Vous devez indiquer à PHP d’utiliser un programme fourni avec MailHog, `mhsendmail`, pour gérer l’envoi.
Pour cela, vous devez modifier votre fichier de configuration `php.ini`. Cherchez la directive `sendmail_path` et modifiez-la de la manière suivante :
Le chemin vers `mhsendmail` dépend de la manière dont vous avez installé MailHog. Vous devrez peut-être le rechercher sur votre système. Une fois cette ligne configurée et votre serveur web redémarré, tous les appels à la fonction `mail()` seront redirigés vers MailHog.
Foire Aux Questions (FAQ) sur MailHog
Voici quelques questions courantes que les développeurs se posent à propos de MailHog.
Comment changer les ports par défaut de MailHog ?
Oui, c’est possible en utilisant des arguments au lancement. Par exemple, pour utiliser le port SMTP `1026` et le port web `8026`, vous pouvez lancer MailHog avec la commande : MailHog -smtp-bind-addr=0.0.0.0:1026 -ui-bind-addr=0.0.0.0:8026. Adaptez cette logique pour les commandes Docker ou Homebrew.
MailHog fonctionne-t-il avec les pièces jointes ?
Absolument. L’interface web de MailHog vous permet de voir les pièces jointes et de les télécharger. C’est très pratique pour tester l’envoi de factures, de rapports ou d’autres fichiers générés par votre application.
Les emails sont-ils stockés de manière permanente ?
Non, par défaut, les emails sont stockés uniquement en mémoire. Si vous redémarrez MailHog, tous les emails interceptés seront perdus. C’est voulu, car c’est un outil de test temporaire. Il est possible de configurer un stockage persistant, mais c’est un cas d’usage plus avancé.
Peut-on utiliser MailHog en production ?
Existe-t-il une API pour MailHog ?
Oui, MailHog expose une API RESTful. Elle permet d’interagir avec les emails de manière programmatique. C’est très utile pour écrire des tests automatisés ou d’intégration qui doivent vérifier qu’un email a bien été envoyé et que son contenu est correct.
