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;
}
?>