Checking if Email address is deliverable

<?php 

function checkemail($email){ 
    list($mailbox,$domain) = split('@',$email,2); 
    $state = 'domain'; 
     
    // find preferred mailserver 
    if(getmxrr($domain,$mailhosts,$pref)){ 
        asort($pref); 
        foreach($pref as $preferred){ 
            $mailserver =  $mailhosts[key($pref)]; 
            break; 
        }     
        $state = "trying mailserver $mailserver"; 
        $state = mailconnect($mailserver,$email); 
     }else{ 
        // no mail exchange found try as host 
        $state = "No MX, trying $domain"; 
        $state = mailconnect($domain,$email); 
     } 
     return $state; 
} 

function mailconnect($mailserver,$email){     
    $myhostname = $SERVER_NAME; 
    $connection = fsockopen($mailserver, 25); 
    if($connection){ 
        $state = "connected to $mailserver"; 
        // Nothing to do with greeting 
        //$smtpgreeting = fread($connection, 512); 
         
        //if($smtpgreeting){ 
        fputs($connection, "HELO $myhostname\r\n"); 
        $hello = fgets($connection, 512); 
        if($hello){ 
            $state = "chatting to $mailserver: $hello"; 
            fputs($connection, "MAIL FROM: <webserver@$myhostname>\r\n");     
            $youok = fgets($connection, 512); 
            if($youok){ 
                $state = "chatting to $mailserver: $youok"; 
                fputs($connection, "RCPT TO: <$newaddress>\r\n"); 
                $recepient = fgets($connection, 512); 
                $state = "chatting to $mailserver: $recepient"; 
                if(ereg('250',$recepient)){ 
                    fputs($connection, "QUIT\r\n"); 
                    $deliverable = true; 
                    $state = false; 
                }elseif(ereg('220',$recepient)){ 
                    fputs($connection, "QUIT\r\n"); 
                    $deliverable = true; 
                    $state = false; 
                }else{ 
                    $deliverable = false; 
                    $state = "RCPT? $recepient $newaddress";     
                }         
            } 
        }else{ 
            $state = "$mailserver not accepting mail now, please try again."; 
        }         
        //}else{ 
            //$state = 'mailserver not greeting me'; 
            //break; 
        //}             
    }else{ 
        $state = "$mailserver not listening"; 
    } 
    return $state; 
}     
?>
