function validate_email($email){
$exp="^[az]+([_][az]+)*@([az]+([_][az]+))+$";
if(eregi($exp$email)){ //先用正则表达式验证email格式的有效性
if(checkdnsrr(array_pop(explode("@"$email))"MX")){//再用checkdnsrr验证email的域名部分的有效性
return true;
}else{
return false;
}
}else{
return false;
}
}
注意checkdnsrr函数在win主机上是无效的!下面是国外某程序员提出的一种解决办法另外写了个函数代替checkdnsrr函数
function myCheckDNSRR($hostName $recType=){
if(!emptyempty($hostName)){
if( $recType== ) $recType="MX";
exec("nslookup type=$recType $hostName" $result);
foreach($result as $line){
if(eregi("^$hostName"$line)){
return true;
}
}
return false;
}
return false;
}