Clumsy: Emailadresse online überprüfen

Gibt es eine Möglichkeit online eine eingegebene Emailadresse per CGI auf exitenz zu testen und 'True' oder 'False' zurück gibt.

Ich sag schonmal Danke

  1. Hallo,

    auch wenn ich mich nicht besonders auskenne, nur so eine Idee. Der vordere Teil der Email wird erst vom endgültigen Mailserver interpretiert, man könnte aber schauen, ob der Server einen Mailport geöffnet hat. Müsste man nur noch wissen, wie man den Port abfrägt und welcher das ist. Dann weisst Du zumindest, ob die Andresse thoeretisch möglich ist.

    Gruss
    Philipp

    Gibt es eine Möglichkeit online eine eingegebene Emailadresse per CGI auf exitenz zu testen und 'True' oder 'False' zurück gibt.

    Ich sag schonmal Danke

  2. hi clumsy,

    Gibt es eine Möglichkeit online eine eingegebene Emailadresse per CGI auf exitenz zu testen und 'True' oder 'False' zurück gibt.

    wenn die frage ist, die existenz zu prüfen, dann nein, wäre ja wunderbar, dann könnten mailspammer einfach mal abchecken, welche adresse so existieren und dann geht es los ;) du kannst aber den syntax der adresse prüfen, da muß mind. 1 zeichen stehen (user), dann ein @. dann von hinten angefangen, die 2 bis 3-stellige (g)tld-endung (nur buchstaben!; ok, *.arpa fallen da durch, habe ich aber selbst noch nie gesehen), dann einen punkt, davor der domainname, der ist mind. 2 und maximal 63 (imho) zeichen lang (keine umlaute, nur buchstaben, ziffern und - möglich). zwischen domainnamen und dem @ (also auch von rechts nach links gesehen) stehen dann eventuell noch subdomain(s), können auch mehrere sein.

    frage: gibt es eigentlich mailadressen, die auf die ip-nummer enden, theoretisch müßte es ja möglich sein, oder?

    user@(subdomain.)domainname.tld-endung

    cu, X

    ps: wenn hinten .dd steht, dann ist die mailadresse garantiert falsch, diese tld ist momentan nicht vergeben, könntest du auch noch abchecken, ob die letzten 2 (de, at, ch, us, au, ru, nu, cc usw.) bzw. 3 (gov, edu, mil, int, net, com, org) zeichen "zugelassen" sind.

    1. Hallo,

      Eigentlich müßte es ja möglich sein, den MX-Record der übergebenen Domain rauszufinden.
      Über den könnte man ja dann Verbindung mit dem Mailserver aufnehmen, und zumindest überprüfen, ob da überhaupt ein Server vorhanden ist.
      Ich kenn mich ja beim SMTP-Protokollnicht aus, aber da gibts sicher eine Möglichkeit, zu überprüfen, ob ein User am Mailserver vorhanden ist. Wie bringen es sonst Mail-Server fertig, Mails auszuliefern.
      Also flugs einen mini-Mailserver schreiben und dann die Adresse überprüfen.

      Theoretisch müßte das möglich sein. Denk ich.

      Grüße
      Klaus

      1. Hallo Klaus,

        Theoretisch müßte das möglich sein. Denk ich.

        ...praktisch auch.

        Den untenstehenden Code-Schnippsel habe ich auf einer PHP-Source-Seite gefunden. Dort ist auch recht ausführlich beschreiben was dahinter steckt und wo es Schwierigkeiten geben kann.

        Leider hab ich die Seite auf die schnelle in meinen Bookmarks nicht wieder gefunden (sollte mal wieder aufräumen):

        function validateEmail ($email)  
        {  
            global $SERVER_NAME;  
            $return=array(false,"","","");  
            list($user,$domain)=split("@",$email,2);  
            $arr=explode(".",$domain);  
            $count=count($arr);  
            $tld=$arr[$count-2].".".$arr[$count-1];

        if (checkdnsrr($domain,"MX")) {  
                if (getmxrr($domain,$mxhosts,$weight)) {  
                    for ( $i=0; $i < count($mxhosts); $i++)  
                    {  
                        $fp = fsockopen ($mxhosts[$i], 25 );  
                        if ($fp)  
                            $s = 0;  
                            $c = 0;  
                            $out = "";
                            set_socket_blocking ( $fp, false );  
                            do  
                            {  
                                $out = fgets ( $fp, 2500 );  
                                if ( ereg ( "^220", $out ) )  
                                {  
                                    $s = 0;  
                                    $out = "";  
                                    $c++;  
                                    $return[2] = true;  
                                    $return[3] = $mxhosts[$i];  
                                }  
                                else if (($c > 0) && ($out == ""))  
                                {  
                                       $return[2] = true;  
                                    break;  
                                }  
                                else  
                                { $s++;    }  
                                if ( $s == 9999 ) {  
                                break;  
                                }  
                            } while ( $out == "" );  
                            set_socket_blocking ( $fp, true );  
                            fputs ( $fp, "HELO ".$SERVER_NAME."\r\n");  
                            $output = fgets ( $fp, 2000 );  
                            fputs ($fp,"MAIL FROM: <info@".$domain.">\r\n");  
                            $output = fgets ( $fp, 2000 );  
                            fputs($fp,"VRFY <".$email.">\r\n");                
                            $output = fgets ($fp, 2000);
                            if (ereg("^550",$output))  
                            {  
                                $return[0] = false;
                                $return[1] = $output;  
                            }  
                            else  
                            {  
                                $return[0] = true;
                                $return[1] = $output;  
                            }  
                            fputs ( $fp, "QUIT\r\n");  
                            fclose($fp);  
                            if ($return[0] == false) {  
                            break;  
                             }  
                     }  
                }  
            } else {  
                $return[0] = false;  
                $return[1] = "Invalid email address (bad domain name)";  
                $return[2] = false;  
            }
            return $return;  
        }

        Bin noch nicht dazu gekommen es selber auszuprobieren.

        SolOng
        Stephan

        1. Hallo,
          Habs mal mit meinem Linux-Rechner ausprobiert, allerdings mag mein sendmail kein VRFY.
          mit 'RCPT' ist's gegangen
          einfach ausprobieren mit telnet:

          TELNET mailserver 25

          HELO domain.name
          MAIL FROM: meine@mail.adresse
          RCPT TO: zu_ueberpruefender_name
          QUIT

          Alle Kommandos liefern einen Rsponse retour, wobei am anfang der Zeile eine Zahl steht. Anscheinend bedeuten Zahlen im Bereich 200-299 'ok' und Zahlen im Bereich >500 'nixgutt'.

          Näheres steht in RFC 821 und ergänzungen durch pätere RFC's.

          Grüße
          Klaus

          1. genial >:-)))) Vielen Dank (obwohl ich nicht der Fragesteller war)!!!!

            Hallo,
            Habs mal mit meinem Linux-Rechner ausprobiert, allerdings mag mein sendmail kein VRFY.
            mit 'RCPT' ist's gegangen
            einfach ausprobieren mit telnet:

            TELNET mailserver 25
            HELO domain.name
            MAIL FROM: meine@mail.adresse
            RCPT TO: zu_ueberpruefender_name
            QUIT

            Alle Kommandos liefern einen Rsponse retour, wobei am anfang der Zeile eine Zahl steht. Anscheinend bedeuten Zahlen im Bereich 200-299 'ok' und Zahlen im Bereich >500 'nixgutt'.

            Näheres steht in RFC 821 und ergänzungen durch pätere RFC's.

            Grüße
            Klaus

  3. Hi,

    Gibt es eine Möglichkeit online eine eingegebene Emailadresse per CGI auf exitenz zu testen und 'True' oder 'False' zurück gibt.

    was in perldoc perlfaq9 steht, gilt auch für jede andere Sprache:

    "How do I check a valid mail address?
    You can't, at least, not in real time. Bummer, eh?"

    Es steht noch einiges mehr dazu da, inkl. Lösungsansätzen zu dem, was möglich ist. Wenn Du's wirklich wissen willst, installiere Dir am besten Perl und lies das entsprechende Kapitel.

    Cheatah

  4. Hallo Clumsy

    Gibt es eine Möglichkeit online eine eingegebene Emailadresse per CGI auf exitenz zu testen und 'True' oder 'False' zurück gibt.

    In Perl kannst du mit dem Modul Email::Valid (http://www.perl.com/CPAN-local/authors/id/M/MA/MAURICE) die Syntax der Adresse sowie die Existenz eines Mailservers beim Empfänger überprüfen. Nachfolgend ein Beispiel:

    use Email::Valid;
    if(Email::Valid->address(-address=>$email,-mxcheck=>1)) {

    Adresse $email ist OK

    } else {

    Adresse $email ist ungültig

    }

    Gruss
    Andreas

  5. Gibt es eine Möglichkeit online eine eingegebene Emailadresse per CGI auf exitenz zu testen und 'True' oder 'False' zurück gibt.

    Für PHP als elegantere Alternative zu CGI/Perl gibt es eine hervorragende Lösung:

    Bei Verwendung der E-Mail Validation Class (<a href="http://phpclasses.upperdesign.com/browse.html/package/13">phpclasses.upperdesign.com/</a>) wird sowhl die Syntax der Adresse, als auch der Host (als gültige MX-Domain) und der User am Mailserver online überprüft.

    Die Verwendung der Klasse könnte dann in etwa so aussehen:

    <html><head>T E S T</head><body>
    ...
    <?php
    require("email_validation.php"); // Muß in include-Path; sonst Pfad verwenden ("../email_validation.php")

    $validator = new email_validation_class;
    $validator->timeout = 10;

    $valid = true;

    if(isset($email) && strcmp($email,"")) {
      if($validator->ValidateEmailBox($email) <= 0)
        $valid = false;
    } else $valid = false;
    ?>
    ...
    <!--Beispiel für HTML-Ausgabe_Start-->
    <?php if($valid == true): ?>E-Mail-Adresse angenommen! :-)
    <?php else: ?>E-Mail-Adresse abgelehnt! ;-)
    <?php endif; ?>
    <!--Beispiel für HTML-Ausgabe_End-->
    ...
    </body></html>

    Gibt true oder false für $valid zurück.

    Ich selbst verwende es für meinen "SendToFriend-Service", mit dem man einen Link zur gerade angezeigten Seite an einen Bekannten, etc. per E-Mail versenden kann.

    Viele Grüße,
    Christian Maier