MailHog : Envoyez vos e-mails de développement avec PHP
Développer votre propre module d’envoi d’e-mails ne devrait pas vous prendre beaucoup de temps grâce à MailHog. Ce ne nom ne vous dit rien ? Alors commencez par lire notre précédent article. L’objectif de ce second article est de vous présenter notre projet d’exemple d’intégration de MailHog avec Docker, en utilisant le langage PHP.
Démonstration du résultat final

Convaincu·e ? Alors lisez la suite pour comprendre comment cela fonctionne. Si vous souhaitez récupérer directement le projet, vous trouverez les informations en fin d’article.
Contenu du docker-compose

Pour que vous puissiez mieux comprendre le code, nous vous proposons de vous guider dans la création d’un exemple PHP avec MailHog. Bien entendu le résultat final se trouve à la fin. Mais nous pensons que vous appréhenderez mieux l’outil en essayant de l’implémenter vous même. Pour vous aider, nous avons écrit une série de questions-réponses :
Docker-compose est un fichier YAML décrivant des services/conteneurs. Pour plus d’informations, nous vous conseillons de lire cet article.
– D’un conteneur PHP contenant un serveur Web Apache avec le code source PHP à exécuter.
– D’une instance MailHog qui fait office de serveur SMTP d’envoi et de réception d’e-mails.
– D’un service Composer, nommé PHPMailer, qui installe la librairie d’envoi de mails avec PHP.
Il faut ouvrir le port 8025 du conteneur de MailHog.
Oui elle se nomme « mailhog/mailhog », nous vous conseillons d’utiliser la version v1.0.0.
Nous vous conseillons l’image suivante : « php:7.2-apache-stretch ».
Il suffit d’utiliser l’image « composer/composer:php7 », qui trouve le fichier composer.json et installe les dépendances.
Si vous avez suivi nos indices, vous devriez obtenir un docker-compose.yml semblable au nôtre :
Ce fichier est disponible en fin d’article.
Envoi d’e-mails avec PHP

Bien qu’il existe de nombreuses librairies permettant d’envoyer des e-mails avec PHP, nous avons choisi d’utiliser PHPMailer.
Inclusion de PHPMailer
Vous devez inclure le fichier vendor/autoload.php pour charger la libraire PHPMailer. Puis il faut indiquer à PHP que vous souhaitez utiliser les classes de PHPMailer.
Pour terminer, il suffit de créer un objet de type PHPMailer. Le résultat obtenu est le suivant :
Paramétrage de PHPMailer

Afin que PHPMailer parvienne à contacter MailHog, il faut lui indiquer le nom ou l’adresse IP du serveur de mail ainsi que le port à utiliser. MailHog est un serveur SMTP qui écoute le port 1025. Concernant le nom du serveur, il suffit de reprendre celui défini dans docker-compose.
Concernant l’authentification, je préfère l’activer et laisser la combinaison username/password vide. De cette manière, il est simple de passer de la configuration de test à la configuration de production. Les propriétés restent les mêmes, ce sont uniquement les valeurs qui changent.
Vous devriez obtenir le résultat suivant :

Création et envoi d’e-mails

Il suffit d’utiliser les fonctions de PHPMailer pour ajouter les informations de base d’un e-mail (le destinataire, l’expéditeur, le sujet, le message). Ensuite, il reste plus qu’à l’envoyer.
Enfin, vous devriez obtenir le résultat suivant :

Vérifier que le mail est envoyé/reçu
Il suffit d’ouvrir un navigateur et de se rendre sur la page suivante : http://localhost:8025. Une interface MailHog apparaît et vous affiche les mails envoyés.
Récupérer le projet d’envoi d’e-mails

Pour récupérer le code et la procédure d’installation, vous devez remplir le formulaire suivant. Un petit café, nous fait toujours plaisir 😀.
ATTENTION : Notre site évolue et ne propose plus d’envoi automatique pour le moment. Vous devez donc adresser vos réponses à l’adresse contact@les-enovateurs.com. Merci !

Contributions
Nous sommes preneurs de toute sortes de contribution sur ce projet. Par exemple, vous pouvez proposer des exemples d’autres langages. Et si vous êtes amateurs de sensations fortes, vous pouvez activer Jim (un mode de MailHog qui génère des erreurs aléatoires). Il faut suffit d’effectuer des tests et de modifier le code PHP pour gérer les erreurs/bugs.
Conclusion

Maintenant, vous n’avez plus d’excuses pour ne pas tester l’envoi d’e-mails. Une fois MailHog intégré sur vos plateformes de développement/tests, vous vous sentirez plus écolo. Vos mails de tests n’auront plus besoin de faire le tour de la terre en passant par des serveurs très éloignés.
Pour continuer à apprendre d’autres astuces de développeur, je vous conseille de lire cet article : Pi-hole : stopper toutes les pubs Web sans plugin grâce au Raspberry Pi.
REDUISEZ VOTRE IMPACT... PARTAGEZ CET ARTICLE !
CLIQUEZ SUR LE BOUTON "JE PARTAGE" : LE POST CI-DESSUS EST AUTOMATIQUEMENT COPIÉ.
A PRESENT, RENDEZ-VOUS SUR LINKEDIN ET PARTAGEZ CE CONTENU SUR VOTRE PROFIL !