Stephan Huber: MAIL

Beitrag lesen

Hallo Christoph,

Ich verschicke per PHP eine EMAil. Dabei möchte ich allerdings prüfen, ob die EMAIL wirklich versendet wurde, oder ob es einen Fehler gab (Das kann ja ganz leicht passieren bei falscher Adressen, oder so). Dann möchte ich darauf reagieren: "EMAIl wurde versenden" oder eben "Es gab einen Fehler". Wie kann ich die If-Anweisung realisieren ???

So einfach garnicht. Wenn Du:
$result=mail(...);
if($result)
{
  echo "funktioniert!";
}
werden nur die Fehler abgefangen, die entstehen, wenn PHP keinen MTA wie Sendmail findet. Danach ist die Email im MTA, und er versucht sie zu senden, was nicht sofort gelingen muß, auf jeden Fall erfährt das PHP-Skript nichts von dessen Erfolg/Mißerfolg.
Du kannst auf die Syntax der Mailadresse prüfen, oder, wenn es sein muß, nachschauen, ob für die Domain ein DNS-Eintrag existiert, alles andere kannst Du nur nachträglich machen. Es gibt auch noch die Möglichkeit, beim anderen Mailserver anzufragen, ob er die Emailadresse kennt, allerdings ist diese Möglichkeit soweit ich weiß bei vielen Mailservern aus Sicherheitsgründen gesperrt, und dann würde eine eigentlich gültige Email als falsch analysiert.
Das einzige was praktisch Sinn macht, ist ein Syntaxcheck, die beiden anderen Möglichkeiten dauern auch zu lange, da man z.B. bei ungültigen Domains auf den Timeout des dnslookups warten muß.

Viele Grüße
Stephan