会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
技术文档 > Web开发 > PHP
用PHP验证邮箱是否真实有效
发表日期:2006-02-16 16:36:09作者:� 出处:立华软件园  

这个程序是直接验证邮箱是否真实有效的函数,checkmail是主函数,使用时请直接使用即可,注意:因使用了DNS函数,该程序不能运行在Windows系统之下,使用Linux和FreeBSD都测试通过。

<?
set_time_limit(0);
if($_POST["mail"]!=""){
    echo "电子邮件地址:".$_POST["mail"];
    if( checkmail($_POST["mail"]))
        echo " — <font color=green>有效</font>";
    else
        echo " — <font color=red>无效</font>";
}
?>

<form method=post action="">
<input type=text name=mail ><input type="submit" value="检查">
</form>

<?

function server_parse($socket, $response, $line = __LINE__){
    while (substr($server_response, 3, 1) != ' '){
        if (!($server_response = fgets($socket, 512))){
            return false;
        }
    }
    if (!(substr($server_response, 0, 3) == $response)){
        return false;
    }
    return true;
}

function checkmail($strMail){
    $arrMail=explode("@",$strMail);
    if(! getmxrr ( $arrMail[1], $mxhosts ,$bb))return -1;
    if($mxhosts[0]=="")return -1;//不能获得主机的MX信息
    $cc=false;
    for($i=0;$i<count($mxhosts);$i++){
        echo $mxhosts[$i]." ";
        if( $socket = @fsockopen($mxhosts[$i], 25, $errno, $errstr, 5) ){
            if(server_parse($socket, "220", __LINE__)){
                $cc=true;
                break;
            }
        }
    }
    if($cc==false)return -2;//不能打开主机
    fputs($socket, "HELO ".$arrMail[1]." ");
    if(!server_parse($socket, "250", __LINE__))return -3;

    srand((double)microtime()*1000000);
    $randval = substr(md5(uniqid(rand())),0,6);
    fputs($socket, "MAIL FROM:<$randval@testemail.com> ");
    //使用是请将testemail.com改成你网站的域名
    if(!server_parse($socket, "250", __LINE__))return -4;

    fputs($socket, "RCPT TO:<$strMail> ");
    if(!server_parse($socket, "250", __LINE__))return -5;//无效的用户名

    fclose($socket);
    return true;
}
?>

【返回顶部】 【打印本页】 【关闭窗口】

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2026 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00436