Stephan Schmid: Emailadresse online überprüfen

Beitrag lesen

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