Tester les envois des emails en local avec MailDev

Si vous faites des développements en local et que vous souhaitez tester l’envoi des emails et pour éviter de fausses manipulations ou des envois non souhaités à des contacts réels, vous pouvez utiliser la solution MailDev.

Il s’agit d’un paquet en Node.js qui permet de lancer un service web qui intercepte tous les emails sortants depuis votre machine en localhost pour les afficher depuis une interface web similaire à un webmail dont voici un petit aperçu.

Maildev : Test d'envoi d'emails en local

Pour installer cette application rien de plus simple il faudrait lancer la commande npm suivante. Il faut au préalable avoir installé Node.js et l’ajouter dans le path si vous êtes sur une machine tournant sous Windows (vous pouvez trouver pleins de tutoriels dans ce sens).

// N'oubliez pas le sudo si vous êtes sous linux
npm install -g maildev

Modifier le fichier php.ini, en changeant :

[mail function]
SMTP = localhost
smtp_port = 1025

Relancer apache/wamp

Puis lancer tout simplement le service avec la commande

maildev

Vous aurez alors accès depuis votre navigateur à une interface de « webmail » à l’adresse http://127.0.0.1:1080/

Vous pouvez tester le service en envoyant un email depuis un fichier php

mail('contact@test.fr', 'MailDev test', 'Contenu du mail à consulter depuis MailDev', 'From: info@societe.com');

Si pour une raison ou une autre MailDev ne fonctionne pas notamment sur Windows, il se peut que les ports soient bloquées par votre firewall ou votre box. Pour cela vous pouvez lancer une des commandes suivantes pour changer le port bloqué ou bien essayer de débloquer le port en question (1025 ou 1080).

# ici on utilise le port 25 à écouter au lieu de 1025
maildev -s 25
# ici on change le port utilisé pour l'interface web (8888 au lieu de 1080)
maildev -w8888

Si vous utilisez une machine virtuelle, il se peut que malgré tout l’interception des emails ne fonctionne pas. Pour remédier à ce problème il faut installer postfix

// Installer postfix (laisser tout par defaut)
apt-get install postfix

// puis
vim /etc/postfix/main.cf

// modifier dans main.cf
relayhost = 127.0.0.1:1025

// Relancer postfix
service postfix restart

Alternatives à Maildev

Sur Windows vous pouvez également utiliser le logiciel Smtp4Dev qui se chargera d’écouter n’importe quel port. Si vous disposez de Ruby, vous pouvez utiliser MailCatcher qui fait exactement la même chose