PHP-Mail-Setup für Entwickler

Submitted by Erik Wegner on Tue, 10/30/2018 - 19:57
Body

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:

Bildschirmfoto von MailDev