Wenn lokal Anwendungen getestet oder entwickelt werden, sollen auch E-Mails verschickt werden. Damit die E-Mails den Entwicklerrechner nicht verlassen, wird mit den folgenden Schritten ein einfacher Mail-Transfer-Agent (ssmtp) und ein Mailserver (MailDev) eingerichtet.
MailDev kann am einfachsten als Docker-Image gestartet werden:
docker run -p 1080:80 -p 1055:25 djfarrelly/maildev
Anschließend wird SSMTP in /etc/ssmtp/ssmtp.conf konfiguriert:
root=postmaster mailhub=127.0.0.1:1055 hostname=localhost.local FromLineOverride=yes
Damit PHP auch E-Mails versenden kann, wird die Einstellung mail.force_extra_parameters = -t in der entsprechenden php.ini gesetzt. Anschließend muss der Webserver oder PHP-Prozess neu gestartet werden.
Zum Testen auf der Kommandozeile dient folgender Schnipsel:
echo -n 'Subject: test\n\nTesting ssmtp' | sendmail -v tousername@example.com
Mit dem nachfolgenden Script (Quelle: https://www.conetix.com.au/support/article/simple-php-mail-test) kann der Versand per PHP getestet werden:
<?php ini_set( 'display_errors', 1 ); error_reporting( E_ALL ); $from = "erikwegner@localhost.local"; $to = "t1@localhost.local"; $subject = "PHP Mail Test script"; $message = "This is a test to check the PHP Mail functionality"; $headers = "From:" . $from; mail($to,$subject,$message, $headers); echo "Test email sent";
So sieht das Ergebnis im Browser (http://localhost:1080) aus: