# Date 2007
# Author: Martin Kezlinek martin@kezlinek.cz
error_reporting(0);
$deb=1;
function ReadNext ($Socket) {
global $deb;
socket_set_blocking($Socket,FALSE);
do {
$Get = fgets($Socket,128);
if ($deb && $Get) echo "<< $a .. $Get
";
} while ($Get != '') ;
socket_set_blocking($Socket,TRUE);
}
function ValidAddress ($mxhost,$chkmail) {
global $deb;
$com[]="EHLO jmenoserveru.cz\r\n";
$com[]="MAIL FROM: \r\n";
$com[]="RCPT TO: <$chkmail>\r\n";
$com[]="QUIT\r\n";
$Socket = fsockopen($mxhost, 25, $errno, $errstr, 30);
if ($Socket != '') {
if ($deb) print "==Connect OK
";
$Get = fgets($Socket);
if ($deb) echo "<<$Get
";
$Get = substr($Get,0,3);
if ($Get != '220') {fclose($Socket);return 10;}
fwrite($Socket,$com[0]);
if ($deb) print ">>$com[0]
";
$Get = fgets($Socket,128);
if ($deb) echo "<< $a .. $Get
";
$Get = substr($Get,0,3);
if ($Get != '250') {fclose($Socket);return 10;}
ReadNext($Socket);
fwrite($Socket,$com[1]);
if ($deb) print ">>$com[1]
";
$Get = fgets($Socket);
if ($deb) echo "<<$Get
";
$Get = substr($Get,0,3);
if ($Get != '250') {fclose($Socket);return 10;}
fwrite($Socket,$com[2]);
if ($deb) print ">>$com[2]
";
$Get = fgets($Socket);
if ($deb) echo "<<$Get
";
$Get = substr($Get,0,3);
#if ($Get != '250') {fclose($Socket);return 10;}
if ($Get == '550') {fclose($Socket);return 10;}
if ($Get == '554') {fclose($Socket);return 10;}
if ($Get == '501') {fclose($Socket);return 10;}
fwrite($Socket,$com[3]);
if ($deb) print ">>$com[3]
";
$Get = fgets($Socket);
if ($deb) echo "<<$Get
";
fclose($Socket);
}
else return 1;
return 0 ;
}
function CheckMail ($chkmail) {
global $deb;
$parse=preg_match_all('/([a-z0-9\.\+!#$%&*-=?^_`{|}~]+)@([a-z0-9\.\+!#$%&*-=?^_`{|}~]+)/ui',$chkmail,$retary,PREG_PATTERN_ORDER );
if ($parse) {
if (getmxrr($retary[2][0],$MXServers,$MXWeight)) {
for($i=0;$i";
if ( ! ValidAddress ($mx_host,$chkmail) ) return 0;
}
}
return 1;
}
if ($_GET['email']) {
$ret=CheckMail ($_GET['email']);
print "Checking ".$_GET['email']." with return=$ret
";
}
?>
Source code this
.