Laravel Mailhog Docker

Letztens wurde ich gefragt, wie ich Mail bei Laravel teste. Ich meinte ich habe einen SMTP Server den ich nutzen kann. Da meinte er, dass wäre zwar okay aber man könnte sich damit auch eine valide Mailadresse verbrennen. Mit verbrennen meint der Kollege, dass sie global als SPAM Mailadresse angerechnet werden kann. Falls die Tests mal ausufern sollten. Hmm. So richtig überzeugt hatte es mich jetzt nicht, aber ich hab mich seiner Empfehlung Mailhog zu nutzen nicht wiedersetzt. Im Gegenteil ich sogar ganz dankbar dafür. Weil wann hätte ich mit dieser Gewohnheit sonst gebrochen.

Mailhog ist ein lokal Dienst. Man kann sich diesen auf den Rechner Installieren. Dieser Dienst kommuniziert über den SMTP Standard Port 1025. Das bedeutet wenn wir unsere Laravel Konfiguration in der .env auf mailhog anpassen, senden wir aus der Applikation an unseren lokalen SMTP Server. Mailhog hat auch ein User Interface mit dem wir die Mails dann anzeigen lassen können.

Der einfachste Weg Mailhog zu nutzen ist über Docker. Dafür müssen wir nur:

docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhog

eingeben.

In unserer .env Datei passen wir noch die SMTP Konfiguration an:

MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=hello@world.com
MAIL_FROM_NAME="${APP_NAME}"

Dein “Fake” Mailhog EmailClient kannst über localhost:8025 erreichen.

Wenn Du deine gesamte Umgebung über ein docker-compose laufen lässt kannst du natürlich auch den Mailhog SMTP Server mit hinzu fügen.

services:
   mailhog:
     image: mailhog/mailhog:latest
     restart: always
     ports:
       - 1025:1025
       - 8025:8025

Ein gesamte docker-compose Laravel Umgebung findet ihr hier:
https://github.com/MikeLowrey/docker-compose-laravel-2021

. Ansonsten findest Du eine ausführlichere Mailhog Anleitung unter: https://kinsta.com/de/blog/mailhog/.

SeoTheater Autoren