Maildev et Docker — installation et utilisation

miary.dev
3 min readAug 30, 2019

--

En tant que développeur informatique, Il nous arrive souvent de mettre en place une fonctionnalité liée à un email — exemple: envoi d’un email de confirmation à la soumission d’un formulaire.

Aussi, on aimerait bien tester plusieurs choses sur cette fonctionnalité :

  • Les caractères contenus dans l’objet du mail sont-ils bien encodés ?
  • Les images dans le corps du mail sont-elles affichées correctement ?
  • Les destinataires que nous avons spécifiés dans notre script sont-ils bien affichés dans le champ “To” ou reçoivent-ils tous le mail envoyé ?
  • Les pièces jointes ont-elles été bien ajoutées ?
  • etc…

Lorsqu’on travaille en local, Ce test est assez fastidieux. Des solutions existent. Cependant, la mise en place est moins aisée.

On peut par exemple :

  • Configurer un smtp externe par exemple — l’adresse smtp.gmail.com, notre adresse gmail comme identifiant et le mot de passe de notre adresse email — On ajoute ces informations dans notre fichier de configuration php (php.ini) et le tour est joué.
  • Configurer Pegasus Mail et Mercury . Ce qui nous contraint à créer des utilisateurs locaux. Ces utilisateurs doivent avoir l’adresse : moi@localhost. Il va falloir également modifier dans nos scripts. Ce n’est pas vraiment top comme solution.
  • Ou utiliser maildev. Et là, on va être bien…

Nous nous intéresserons à maildev dans cet article. Parce que maildev est facile à mettre en place. Elle est intuitive, simple et claire. De plus, elle est développée en nodejs.

Maildev

est une application nodejs. Elle intercepte le port smtp ( généralement ce port a le numéro : 25 ) . Elle redirige ensuite les mails écoutés par ce port vers l’application maildev.

Avec maildev, il est possible de :

  • Visualiser le format de l’email en texte brut ou en html.
  • Tester l’affichage de l’email sur n’importe quelle taille d’écran — un téléphone par exemple ou une tablette.
  • Recevoir un email avec des pièces jointes.
  • Exporter un email au format .eml

Maildev peut être utilisé de 2 façons:

  • via une interface en ligne accessible via une URL — exemple: http://localhost:8001/#/
  • Dans le code source javascript d’une application.

Il est possible d’installer maildev :

  • via nodejs
    npm install -g maildev et ensuite executer la commande maildev ( depuis n'importe quel dossier) pour la lancer
  • Via docker
    docker pull djfarrelly/maildev puis executer la commande docker run -p 1080:80 -p 1025:25 djfarrelly/maildev( depuis n'importe quel dossier) pour la lancer.
  • Via git et nodejs
    git clone git@github.com:djfarrelly/MailDev.git puis npm install -g ./maildev
    et ensuite executer la commande maildev( depuis n'importe quel dossier) pour la lancer.

Nous choisissons la méthode d’installation via docker. Nous allons nous servir de docker-compose plutôt que d’utiliser la commande 2 dans la liste ci-dessus.

Docker compose ( ou Compose) est un outil pour définir et lancer un container Docker multi-applications. Un fichier yaml est utilisé pour configurer les différents services à lancer. Il est ensuite possible de lancer tous les services configurés grâce à une commande.

Nous créons 2 services :

php7.3 nous permet de tester un script php pour l’envoi de mail.

Créons un fichier docker-compose.yml et ajoutons le contenu suivant :

Nous allons ensuite définir notre environnement pour le service phpt3. Cet environnement se définit dans un fichier Dockerfile que nous allons placer dans le dossier dockerapps/php/ Ce dossier étant relatif à docker-compose.yml.

Exemple: Si on a créé le fichier docker-compose.yml ici C:\docker\docker-compose.yml

On aura l’aroborescence suivante :

  • C:\docker\docker-compose.yml
  • C:\docker\dockerapps\php

DockerFile est un fichier texte. Il contient des instructions (lignes de commandes) qui seront lues par Docker pour construire l’image définie dans notre fichier docker-compose.yml.

Notre Dockerfile contiendra les instructions suivantes :

  • Installation de quelques packages : ssmtp, mailutils, vim, curl…
  • Installation de php7.3-fpm et de ses extensions : GD, mysqli, zip, intl
  • Création d’un fichier additionnal.ini qui permet de surcharger une directive déclarée dans php.ini
  • Installation de composer
  • Configuration du sendmail pour pouvoir utiliser maildev

Voici son contenu

dockerapps/php/additionnal.ini

Grâce aux 2 commandes suivantes :

maildev

Ouvrir un navigateur et aller à l’URL http://localhost:8003/

Tester l’envoi de mail

Créons un fichier nommé test_mail.php comme ceci

Et executer ce fichier en ligne de commande grâce à l’exécutable php comme ceci — par exemple

puis vérifier le résultat dans http://localhost:8003/

Et voici le résultat dans maildev

Originally published at https://passions.miary.dev on August 30, 2019.

--

--

Responses (1)