Beim Testen meines Kontaktformulars ist mir folgendes aufgefallen:
Gebe ich als Absender eine Adresse mit einer existierenden Domain an, wird mir die Mail zugesandt; existiert die Domain jedoch nicht, liefert mail() zwar true zurück, eine Mail erhalte ich jedoch nie. Wird die Existenz der Absenderdomain wirklich an irgendeiner Stelle überprüft?
Und bevor du fragst: Ja man kann per PHP einigermaßen prüfen, ob eine E-Mail-Adresse existiert, was allerdings zum einen recht aufwendig ist und zum anderen recht viel Arbeitsleistung beansprucht, sowie dir auch keine absolute Sicherheit bieten kann/wird, wodurch es dementsprechend nicht zu empfehlen ist.
Bleibt im Prinzip nur die Syntax-Prüfung vor dem Absenden von mail() - aber ob das soviel hilft, darf man auch bezweifeln
ihr verkennt anscheinend das Problem von Horst Das Problem ist nicht die Syntaxprüfung, sondern das Absenden an nicht existierende E-Mail-Adressen
Um euch das Ganze jetzt mal zu ersparen und da ich vorhin schon schrieb, dass man die Existenz einer E-Mail-Adresse bedingt prüfen kann, zeig ich euch mal kurz ein Beispiel. Das Wichtigste ist dabei die folgenden Funktion: checkdnsrr
$email = "beispiel@adresse.de";
list($user, $host) = explode("@", $email);
if(checkdnsrr($host, "MX") or checkdnsrr($host, "A")) { // Mail-Adresse ist existent. }
else { // Mail-Adresse ist nicht existent. }
MX steht dabei für Mail Exchanger Ressource Road
A für Address Ressource Road
Nachteile: Es wird nicht überprüft, ob $user existiert und man benötigt den Zugang zu einem DNS-Server. Die Anfrage an den DNS-Server kann sich u.U. auch hinziehen und den Webserverprozess blockieren.