Um den Mailversand für eine PHP Anwendung zu testen, sollte man in mehreren Stufen vorgehen:

  • Test des Mailversandes auf Betriebsystem Ebene
  • Test des Mailversandes auf PHP Ebene (ohne Anwendung)
  • Test des Mailversandes innerhalb der Anwendung

Eine Mail versenden mit dem Betriebssystem

Um den Mailversand auf Betriebssystem Ebene zu testen, muss man sich mit SSH am Server anmelden und folgenden Befehl in die Konsole schreiben:

echo -e "Der Emailversand auf Systemebene funktioniert\n\nTest geschickt von $(uname -a)" | mail -s 'Mailtest auf Systemebene' empfaenger@meinedomain.de```
Damit das Programm <em>mail</em> zur Verfügung steht, muss das Paket mailx (das sollte bei den meisten Linux Distributionen zutreffen) installiert sein.

Wenn der Test erfolgreich ist, muss der Empfänger eine Mail erhalten haben. Falls nicht, kann man Server lokal keine Mails versenden und die Serverkonfiguration muss korrigiert werden.

<h2>Eine Mail versenden mit PHP (ohne eine Anwendung oder Teile davon zu laden)</h2>

Für diesen Test sicherst Du den folgenden Code in eine Datei, z.B. mailtest.php. Dann passt Du den Konfigurationsteil Deiner Umgebung an und danach überträgst Du die Datei in die Webumgebung, für die der Mailversand getestet werden soll.

<code lang="php">
<?php
# Configuration
$message = 'Der E-Mailversand über PHP (ohne Anwendung ) funktioniert auf '. $_SERVER['SERVER_NAME'];
$to = 'empfaenger@meinedomain.de';
$subject = 'Test (mit PHP ohne Anwendung)';
$headers = 'From: absender@meinedomain.de';

# code

$rc = mail($to, $subject, $message, $headers);

if ($rc) {
  echo "Mail sent to $to (with '$headers')";
}
else {
  echo 'Probleme  (rc='.  $rc .')';
}

Den Test löst man aus, indem man nun die hochgeladene Datei über die URL im Browser aufruft, z.B. mit http://www.meinedomain.de/mailtest.php. Der Mailversand funktioniert, wenn man über die Empfänger Email-Adresse die Mail erhalten hat. Dadurch dass der Test über den Browser gemacht wurde, wurde auch nur PHP als Apache Modul getestet. Wenn man den Mailversand auch für PHP CLI testen möchte, ruft man das gleiche Skript über die Konsole (z.B. mit SSH) auf:

php mailtest.php

Je nach Distribution und Konfiguration kann es auch sein, dass anstelle von “php” auch “php5” verwendet werden muss.

Wichtig: Nach dem Test nicht vergessen die Datei wieder zu löschen ;)

Eine Mail über die PHP Anwendung versenden

Erst nachdem die beiden vorherigen Tests erfolgreich verliefen, macht es Sinn auf Anwendungsebene den Mailversand zu testen. Der Test selbst hängt von jeder Anwendung ab. Man muss dafür einfach in der Anwendung eine Funktion ausführen, die den Versand einer Mail auslöst, die an einem Mailaccount geschickt wird, den man zur Überprüfung der Funktionalität verwenden kann. Sind die beiden vorherigen Tests erfolgreich abgeschlossen worden, und wird über die Anwendung keine Mail verschickt, liegt der Fehler auf Anwendungsebene.

Aktualisiert: