E-Mailadresse auf Existenz überprüfen

SolarStern

Mitglied
Wie schon im Betreff schon erwähnt, gibt es eine Möglichkeit die E-Mailaddi auf Existenz zu überprüfen?

Und zusätzlich noch ne andere Frage: Mit der PHP-mail-Funktion kann man mit einer Zeile ja eine E-Mail verschicken. Wie funktioniert diese Funktion eigentlich? Muß der Computer, beziehungsweise das Betriebssystem oder der Browser eine aktuelle Konfiguration besitzen um diese Funktion ausführen zu können oder ist die Sache in PHP integriert und funktioniert ohne POP3 Server des jenigen, der die Funktion ausführen tut?

CYA

Alexander
 
Zuletzt bearbeitet:
Ja, die gibt es... Erstmal kann man checken, ob die Domain existiert (getmxrr()).
Wenn das der Fall ist kannst du mit dem Mailserver in verbindung treten und mithilfe der SMTP-Befehle erfragen, ob es die Adresse gibt!
 
Original geschrieben von SolarStern
Und zusätzlich noch ne andere Frage: Mit der PHP-mail-Funktion kann man mit einer Zeile ja eine E-Mail verschicken. Wie funktioniert diese Funktion eigentlich? Muß der Computer, beziehungsweise das Betriebssystem oder der Browser eine aktuelle Konfiguration besitzen um diese Funktion ausführen zu können oder ist die Sache in PHP integriert und funktioniert ohne POP3 Server des jenigen, der die Funktion ausführen tut?
Ja, du musst einen funktionierenden SMTP-Server besitzen, und den Host oder die IP des Servers in die php.ini eintragen!
 
Versuch mal dies:
PHP:
<?php
  function CheckEmail($email) {
    $domain = NULL;
    $mxlist = NULL;
    list($user, $domain) = split("@", $email, 2);
    getmxrr($domain, $mxlist);
    $return = array(false, "Kein Mailer.");
    foreach($mxlist as $mx) {
      $fp = fsockopen($mx, 25, $errno, $errstr, 20);
      if(!$fp) continue;
      socket_set_blocking($fp, false);
      $s = 0;
      $c = 0;
      $out = "";
      do {
        $out = fgets($fp, 2500);
        if(ereg("^220", $out)) {
          $s = 0;
          $out = "";
          $c++;
        } else {
          if(($c>0) && ($out=="")) break;
          else $s++;
        }
        if($s==9999) break;
      }
      while($out=="");
      socket_set_blocking ($fp, true);
      fputs ($fp, "HELO mrx\n" );
      $out = fgets($fp, 3000);
      fputs ($fp, "MAIL FROM: anonymous@doesnotexist.com\n" );
      $out = fgets($fp, 3000);
      fputs($fp, "RCPT TO: $email\n");
      $out = fgets($fp, 3000);
      if(ereg("^250", $out)) {
        $return = array(true,$out);
      } else {
        $return = array(false,$out);
      }
      fputs($fp, "quit\n");
      fclose($fp);
      if($return[0]) break;
    }
    return $return;
  }
  $ret = CheckEMail("benutzer@adresse.de");
  echo("$ret[0] $ret[1]");
?>
 
@johannes: ich hatte dazu mal ein fertiges Script von Zend. Das Problem war nur, dass es scheinbar Domains gibgt, die einen (für mein Verständnis falschen) MX-Eintrag haben, da laut MX-Auskunft emails von einer Domain nicht existieren, dies aber durchaus tun und somit ist die Existenzprüfung hinfällig :-\
 
Ehrlich gesagt ist mir das jetzt zu hoch. Was meinst du mit MX-Eintrag wenn ich Fragen darf?

Ich habe den Quellcode nun etwas verändert und getestet und bemerkte, wenn die Addi richtig ist, beziehungsweise vorhanden, gibt es am Anfang der Stringausgabe immer ne 1. Ansonsten unterschiedliche andere Meldungen. Das dürfte doch bei diesem Quellcode doch ausreichend sein, oder?


CYA

Alexander
 
Ich habe in einem Buch einen sehr ausführlichen Test stehen. Allerdings ist der wohl auch ziemlich performance-lastig und es wird empfohlen, diesen wirklich nur bei Bedarf zu nutzen. I.d.R. sollte es doch genügen, die Adresse auf syntaktische Korrektheit zu überprüfen und ggf. die Domain zu kontrollieren. Ikea hatte glaub' ich mal eine kleine Funktion gepostet, die das leistet.
 

Neue Beiträge

Zurück