email-adressen-verifikation

bad taste

Erfahrenes Mitglied
hiho.....
ich hab mal eine ganz simple frage, aber ich hab leidernoch keine antwort gefunden:
gibt es eine möglichkeit, mithilfe von php herauszufinden, ob eine angegebene email-adresse wirklich existiert?
ich meine damit nicht, dass man schaut, ob sie einen namen, ein @ etc. enthält, sonder z.b. eine funktion, die einem dann einfach true liefert, wenn die angegebene mail existiert....
denn wenn man mit mail eine email ein eine sinnlose adresse schickt, denn wird trotzdem true zurückgegeben.
thx for help
//bad taste
 
nein gibt es nicht, dazu müsste man erst eine Testmail schicken und auf eine antwort vom mailerdaemon warten. dummerweise ist das nicht so einfach wie zu prüfen ob eine webaddresse wirklich existiert. die könnte man einfach anpingen oder infos über den WHOIS-Port (glaube 46 oder so) abfragen.
 
Du müsstest ein System einsetzen, dass die zurückkommenden Mails abfängt und überprüft. Wenn eine E-Mail nicht zugestellt werden kann kommt sie mit einem bounce zurück. Sowas ist aber meist nur auf eigenen Servern einzusetzen, weil du Kontrolle über den Mailserver brauchst.
 
Du könntest die Mail auf manuellem Wege schicken, als ob du der Mailserver wärst. Das heisst dich beim anderen Mailserver anmelden und versuchen zu schicken. Dann gibt dir der Mailserver die Meldung ob die Zustellung erfolgreich war gleich zurück. Eine Hilfe sollte dir dabei Webmail Scripts sein. Da sind schonmal ein paar Befehle die du brauchst enthalten.


€dit:
Grade gefunden. Ist ca. das was ich beschrieben habe: http://www.phpclasses.org/browse.html/package/13.html
 
Zuletzt bearbeitet:
Hallo leuts,

also es gibt eine Möglichkeit den "MX" abzufragen.
Die Funktion liefert "TRUE" zurück bei vorhandenem Eintrag.

Nur es gibt ein Problem, wenn beim Provider
des zuständigem SMTP-SERVER "VERIFY" deaktiviert ist.

PHP:
  $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";
  }

Vielleicht kann ja der eine, oder andere damit ja experimentieren
und berichten.


Viel Spass

euer SaTaN
 
hey
ja klar !

Hier wird nur der "MX" Eintrag geprüft
des jeweiligen SMTP-SERVER.

Ich habe ja auch geschrieben das man damit
experimentieren soll.

Das ist ja auch nur ein Codesnipsel.
Wenn jemand was fertiges hat wäre es
ja fair für dieses Forum
es hier rein zu posten.
Damit alle was davon haben.

Es ist mir klar das das was ich gepostet
habe kein endgültiger Code ist.

Also postet was das Zeug hält.

Viel Spass

euer SaTaN
 
PHP:
<?php
  function CheckEmail($email) {
    list($user, $domain) = split("@", $email, 2);
    getmxrr($domain, $mxlist);
    $return = array(false, "No email.");
    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\n" );
      $out = fgets($fp, 3000);
      fputs($fp, "MAIL FROM: user@host.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("user@host.com");
  echo($ret[0]." ".$ret[1]);
?>
 
Hallo Gumbo,

Das mit dem Script ist ja nett.

Nur wäre es ja super wenn Du das Script
etwas kommentieren könntest.

Wie binde ich das Script ein ?
Wäre schön wenn Du ein Beispiel schreiben könntest.

Vielen Dank

euer SaTaN
 
Das Beispiel steht dort schon bei:
[color="2c2c8c"]
&nbsp;&nbsp;$ret = CheckEMail("user@host.com");
&nbsp;&nbsp;echo($ret[0]." ".$ret[1]);
[/color]
 
Zurück