Datum: 18.08.2008
, Kategorie:
PHP
Das Testen von E-Mail-Funktionen mit richtigen E-Mails kann auf die Dauer recht umständlich sein. Man muss immer eine existierende E-Mail-Adresse verwenden und Zugriff auf das entsprechende E-Mail-Konto haben. Und wenn die E-Mail nicht gleich im Konto auftaucht, stellt sich die Frage, wo das Problem liegt. Bei der Anwendung, die man gerade testet, oder bei einem der Server unterwegs?
Mit einem lokalen Mail-Server ließe sich der "Mittelsmann" ausschalten, aber es geht noch einfacher: Die E-Mails werden einfach in eine Log-Datei geschrieben.
Als erstes legt man dazu eine PHP-Datei an, die den PHP input stream anzapft:
maillogger.php
<?php
$filename = '/temp/maillogger.txt';
$stdin = fopen('php://stdin', 'r');
$in = '';
while (!feof($stdin))
{
$in .= fread($stdin, 1024); // read 1kB at a time
}
if ($in != '') {
$in .= "\n\n--------------------------------------------------------------------\n\n\n";
if (!$handle = fopen($filename, 'a')) {
exit;
}
if (fwrite($handle, $in) === FALSE) {
exit;
}
fclose($handle);
}
?>
Als nächstes benötigen wir eine Datei, welche die Datei maillogger.php bei Bedarf aufruft. Unter Windows wäre dies eine Batch-Datei mit folgendem Inhalt:
maillogger.bat
@echo off
c:\php\php.exe -f "c:\www\maillogger.php"
Die Pfade müssten noch den entsprechenden Gegebenheiten angepasst werden.
Zu guter Letzt muss noch der sendmail_path in der php.ini gesetzt werden.
sendmail_path = "c:\www\maillogger.bat"
Fertig. Alles in allem nur zwei kleine Dateien und ein Eintrag in der php.ini.