In der Entwicklungsumgebung kann es schwierig sein, die E-Mails zu überprüfen, oder Sie können vorsichtig mit dem Zustellungsziel sein. Wenn Sie jedoch ein Tool namens MailHog verwenden, können Sie problemlos eine Umgebung einrichten, in der Sie die geschlossenen E-Mails lokal überprüfen können.
Mail Hog scheint in Go-Sprache erstellt zu sein.
Früher habe ich ein anderes ähnliches Tool namens MailCatcher verwendet, aber ich habe zu MailHog gewechselt, weil es einfacher zu erstellen war.
Beginnen Sie mit der folgenden Konfiguration mit Docker-Compose.
.
├── docker-compose.yml
└── php
├── docker
│ ├── Dockerfile
│ └── php.ini
└── mail_test.php
docker-compose.yml Da das Webinterface an Port 8025 verwendet wird, legen Sie den Port fest.
version: '3'
services:
php:
build:
context: ./
dockerfile: php/docker/Dockerfile
volumes:
- ./php/:/var/www/html/
mailhog:
image: mailhog/mailhog
ports:
- "8025:8025" #Webinterface-Port
Dockerfile Da "mhsendmail" erforderlich ist, um E-Mails von PHP zu senden, installieren Sie es mit 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 Schreiben Sie "[Mail-Funktion]" neu.
[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
;Unten umgeschrieben
sendmail_path = "/usr/local/bin/mhsendmail --smtp-addr=mailhog:1025"
mail_test.php
<?php
$to = "[email protected]";
$subject = "TEST";
$message = "Mail-Test";
$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
Angezeigt bei localhost: 8025
$ docker exec -it mailhog_php_1 /bin/bash
root@9c4b6a5df613:/var/www/html# php mail_test.php
Die Benachrichtigung über den Eingang der E-Mail wird in den Fenstern angezeigt Sie können sehen, dass die E-Mail angekommen ist