Der Martin: Nachtrag: diverse Syntaxfehler im PHP

Beitrag lesen

Hi,

Der Erfolg (oder Mißerfolg) des Absendens der mail sollte übrigens auch geprüft werden.

das wäre schön, ja - ist aber nicht möglich, wenn man die PHP-Funktion mail() verwendet.

$erg=mail($Empfaenger, $Mailbetreff, "", $Header);

if($erg===false)
{
        echo "Fehler beim Verschicken mail";
}

  
Erstens halte ich es für unnötig, das Funktionsergebnis von mail() erst noch zwischenzuspeichern; in meinen Augen ist das ein Schritt, der die Sache nur ein kleines bisschen unübersichtlicher macht, aber keinen Vorteil bringt. Zweitens liefert mail() immer ein boolsches Ergebnis, der typsichere Vergleich mit false ist also auch unnötig kompliziert. Also stattdessen einfach:  
  
~~~php
if (!mail(...))  
 { echo "Fehler beim Verschicken mail";  
 }

Didaktisch und formal falsch ist an dem verwendeten Formmailer-Script auch, dass es sozusagen eine leere Nachricht verschickt: Für den Parameter "message" wird der Leerstring übergeben. Stattdessen wird die eigentliche Nachricht an die Header angehängt und mit denen zusammen als lange Textwurst übergeben.
Das funktioniert zwar prima, weil PHP intern auch nichts weiter macht, als den Parameter "message" noch an die Header anzuhängen. Schön ist es trotzdem nicht.

Aber der eigentliche Knackpunkt ist, dass mail() mit dem Ergebnis true nur anzeigt, dass die Nachricht erfolgreich an einen MTA übergeben wurde, mehr nicht. Gerade so, als hättest du einen Brief eben in den gelben Kasten eingeworfen. Es ist keine Aussage über den Erfolg der Mail-Zustellung.

Ciao,
 Martin

--
Die letzten Worte des Hardware-Bastlers:
Das Netzkabel lass ich wegen der Erdung lieber dran.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(