Verwenden Sie MailHog zum Überprüfen von E-Mails in der Entwicklungsumgebung (mit Docker).

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.

Dateiorganisation
.
├── 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);
mit Docker-Compose
$ 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
Mailhog WEB-Schnittstelle

Angezeigt bei localhost: 8025 image.png

Führen Sie das Mail-Sendeskript aus dem PHP-Container aus
$ 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 image.png Sie können sehen, dass die E-Mail angekommen ist image.png image.png

Recommended Posts

Verwenden Sie MailHog zum Überprüfen von E-Mails in der Entwicklungsumgebung (mit Docker).
Erstellen Sie eine Browsertestumgebung mit Capybara in der Docker-Entwicklungsumgebung
Konfigurationsskript für die Verwendung von Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1
[Docker] Verwenden Sie Umgebungsvariablen in Nginx conf
Verwenden Sie Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1
Führen Sie Redmine in der lokalen Umgebung von Windows 10 Pro-Use Docker Desktop für Windows aus
ChatWork4j für die Verwendung der ChatWork-API in Java
Verbessern Sie die Leistung der Docker-Entwicklungsumgebung
Ermöglichen Sie die Entwicklung in einer Eclipse-Umgebung mit dem iPLAss SDK
Erstellen Sie eine Entwicklungsumgebung für Docker, Java und Code
Bereiten Sie mit Docker-Compose eine Nuxt (Web) + Laravel (API) -Entwicklungsumgebung im selben Repository vor
[Hinweis] Java-Programm in integrierter Entwicklungsumgebung ausführen Eclipse-I hat versucht, git zu verwenden
Verfahren zum Einführen von Docker in die Entwicklungsumgebung vorhandener Rails-Apps [Rails, MySQL, Docker]
Für diejenigen, die MySQL für die Datenbank in der Umgebungskonstruktion von Rails6 ~ verwenden möchten.
Erstellen Sie die Entwicklungsumgebung von Docker + Laravel PHP + Vue.j in 5 Minuten
SSL in der lokalen Umgebung von Docker / Rails / Puma
Versuchen Sie, mit Docker eine Java-Entwicklungsumgebung zu erstellen
Machen Sie die stärkste Laravel-Entwicklungsumgebung (Docker) in Japan
Befehl, um Docker vorerst zu verwenden
Ich habe versucht, Docker zu verwenden, weil ich die lokale Umgebung bei der Entwicklung der Registerkarte "Microsoft Teams" von MS Learn nicht verschmutzen möchte
Erstellen einer Umgebung zum Kopieren des Buches "Test Driven Development"
Erstellung einer Webanwendungsentwicklungsumgebung in Java (für unerfahrene Personen)
Installieren Sie, indem Sie die Version von Django in der Docker-Umgebung angeben
Docker-Umgebung Nuxt-Axios-Modul zum Festlegen von baseURL
Ich habe versucht, die Umgebung nach und nach mit Docker aufzubauen
WSL2 + VSCode + Docker-Entwicklungsumgebung
Verfahren zum Erstellen einer Rails-Anwendungsentwicklungsumgebung mit Docker [Rails, MySQL, Docker]
Verwenden Sie eine Beispieldomäne für den Paketnamen im Beispielcode
Installieren Sie lsb_release über die Befehlszeile, wenn lsb_release in der Docker-Umgebung fehlschlägt
Erstellen Sie mit Docker Compose eine Entwicklungsumgebung für Django + MySQL + nginx
Richten Sie eine Wordpress Docker-Umgebung ein, ohne das Worpdress-Image zu verwenden
Wir werden eine Spring Framework-Entwicklungsumgebung in der lokalen Umgebung erstellen.
Umgebungskonstruktion für die Entwicklung von Servlet-Anwendungen
Umgebungsbau mit Docker für Anfänger
Verwenden Sie das Findbugs-Plugin in Eclipse
Informationen zur aktuellen Entwicklungsumgebung (Java 8)
Erstellen einer Java-Entwicklungsumgebung (für Mac)
Erstellen Sie eine Unity-Entwicklungsumgebung auf Docker
Verwenden von cuda11.0 mit pytorch mit Docker
[Umgebungskonstruktion] Rails + MySQL + Docker (Anfänger können es auch in 30 Minuten verwenden!)
"Testgetriebene Entwicklung" ab Terminal Erstellen einer Kopierumgebung
Erstellen Sie mit Docker eine Umgebung für "API-Entwicklung + API-Überprüfung mithilfe der Swagger-Benutzeroberfläche"