de.comp.lang.php.* FAQ

15.9. Wie kann ich die Gültigkeit einer Mailadresse testen?

Antwort von Kristian Köhntopp

Der Mailer eines Systems kann die Mail dann zustellen, wenn das Domain Name System (DNS) für die Zieladresse einen Mail Exchanger (MX) Ressource Record (RR) oder einen Address (A) Ressource Record enthält. Wenn man testen möchte, ob die Empfängeradresse für eine Mail gültig ist, braucht man Zugriff auf das Internet und einen DNS-Server, den man befragen kann. Dann kann man die Anfrage, die der Mailer später einmal stellen wird, um die Mail zuzustellen, manuell mit Hilfe der Funktion checkdnsrr() nachvollziehen. Die Funktion liefert true, wenn ein passender RR vorhanden ist.

Eine DNS-Anfrage kann je nach Verfügbarkeit des DNS-Systems bis zu mehreren Minuten dauern. Der betreffende Webserverprozeß ist in diesem Zeitraum blockiert. Das Vorhandensein der benötigten RRs garantiert natürlich nicht, dass das Zielsystem auch mit uns redet oder dass der gewünschte Benutzer existiert und Mail empfangen kann. Die einzige Methode, zuverlässig zu testen, ob eine Mail zustellbar ist, ist sie zuzustellen.

  $addr = "user@host.doma.in";
  list($user, $host) = explode("@", $addr);
  if (checkdnsrr($host, "MX") or checkdnsrr($host, "A")) {
    print "Mail ist vielleicht zustellbar.<BR>\n";
  } else {
    print "Mail ist sicher nicht zustellbar.<BR>\n";
  }

Antwort von Guido Haeger

Im SIMPLE MAIL TRANSFER PROTOCOL (SMTP - RFC 0821 ) ist das Kommando VERIFY (VRFY) definiert. Hat man die Mailadresse "demouser@domain.tld" dann kann man theoretisch mittels "VERIFY demouser" beim für "domain.tld" zuständigen SMTP-Server anfragen, ob ein Postfach für "demouser" existiert. In der Praxis ist dieses Kommando aber bei fast allen SMTP-Servern deaktiviert, bzw. überhaupt nicht implementiert (Spam-/Datenschutz), so dass VERIFY keine praktikable Lösung ist.

Valid HTML 4.01! Valid CSS!

15.9. Wie kann ich die Gültigkeit einer Mailadresse testen?
http://www.php-faq.de/q/q-mail-adresse-testen.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team