Dans l'environnement de développement, il peut être difficile de vérifier le courrier ou vous pouvez faire attention à la destination de livraison, mais si vous utilisez un outil appelé MailHog, vous pouvez facilement configurer un environnement dans lequel vous pouvez vérifier le courrier fermé localement.
Mail Hog semble être fait en langue Go.
J'avais l'habitude d'utiliser un autre outil similaire appelé MailCatcher, mais je suis passé à MailHog car il était plus facile à construire.
Démarrez avec la configuration suivante avec docker-compose.
.
├── docker-compose.yml
└── php
├── docker
│ ├── Dockerfile
│ └── php.ini
└── mail_test.php
docker-compose.yml Comme l'interface Web est utilisée sur le port 8025, définissez le port.
version: '3'
services:
php:
build:
context: ./
dockerfile: php/docker/Dockerfile
volumes:
- ./php/:/var/www/html/
mailhog:
image: mailhog/mailhog
ports:
- "8025:8025" #Port d'interface Web
Dockerfile
Puisque mhsendmail
est requis pour envoyer du courrier depuis php, installez-le avec Dockerfile.
FROM php:5.6-apache
WORKDIR /var/www/html
RUN curl -sSL https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 -o mhsendmail \
&& chmod +x mhsendmail \
&& mv mhsendmail /usr/local/bin/mhsendmail
COPY ./php/docker/php.ini /usr/local/etc/php/
php.ini Réécrire «[fonction de messagerie]».
[mail function]
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
; sendmail_path = /usr/sbin/sendmail -t -i
;Réécrit ci-dessous
sendmail_path = "/usr/local/bin/mhsendmail --smtp-addr=mailhog:1025"
mail_test.php
<?php
$to = "[email protected]";
$subject = "TEST";
$message = "Test du courrier";
$headers = "From: [email protected]";
mb_send_mail($to, $subject, $message, $headers);
$ docker-compose up -d
Building php
Step 1/4 : FROM php:5.6-apache
---> 24c791995c1e
Step 2/4 : WORKDIR /var/www/html
---> Using cache
---> 1294d05c5c03
Step 3/4 : RUN curl -sSL https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 -o mhsendmail && chmod +x mhsendmail && mv mhsendmail /usr/local/bin/mhsendmail
---> Using cache
---> db0719944c4e
Step 4/4 : COPY ./php/docker/php.ini /usr/local/etc/php/
---> 264eb166413a
Successfully built 264eb166413a
Successfully tagged mailhog_php:latest
WARNING: Image for service php was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Pulling mailhog (mailhog/mailhog:)...
latest: Pulling from mailhog/mailhog
df20fa9351a1: Already exists
ed8968b2872e: Pull complete
a92cc7c5fd73: Pull complete
f17c8f1adafb: Pull complete
03954754c53a: Pull complete
60493946972a: Pull complete
368ee3bc1dbb: Pull complete
Digest: sha256:8d76a3d4ffa32a3661311944007a415332c4bb855657f4f6c57996405c009bea
Status: Downloaded newer image for mailhog/mailhog:latest
Creating mailhog_php_1 ... done
Creating mailhog_mailhog_1 ... done
Affiché chez localhost: 8025
$ docker exec -it mailhog_php_1 /bin/bash
root@9c4b6a5df613:/var/www/html# php mail_test.php
La notification d'arrivée du courrier est affichée sur les fenêtres Vous pouvez voir que l'e-mail est arrivé
Recommended Posts