发邮件用什么发啊?mail能发吗?如果没有邮件服务器能发吗?用PHP如何实现发?

解决方案 »

  1.   

    我模糊记得quickform可以验证邮箱格式,,和邮箱是否有效(邮箱存在)..
      

  2.   

    没有邮件服务器...那不会发你还是试试willko的quickform吧...
    邮箱有效性需要交互才能实现,我觉得不太可能直接本地实现
      

  3.   

    不真正发邮件也可以.使用SMTP协议来做
    步骤如下:
    1.连接服务器的25端口(如果没有邮件服务,连了也是白连)
    2.发送helo问候
    3.发送mail from命令,如果返回250表示正确可以,连接本服务器,否则则表示服务器需要发送人验证。
    4.发送rcpt to命令,如果返回250表示则Email存在
    5.发送quit命令,退出连接 
      

  4.   

    这个看你对真实信息的重视级别来做了,通常要验证邮件的真实性,例如51job之类的,会发激活信去处理,所以不填正确的邮件是注册不了的。
      

  5.   

    各位说的都要道理!
    netvt说的也是我想要的!当然,发验证码最好,但有时会觉得麻烦!
    所以想看看有没有简单的方法!
    我查了一下,发现一般是如下验证的:
    第一是正则匹配格式;
    第二个有的人测试域名是否要有效,即@之后的部分
    第三个是好象用socket取各个部分测试!好象和netvt说的一样!另查了一下,另也有相关的不用smtp的PHP邮件类!各位有没有实例?SMTP和非SMTP类均可!或有邮件协议方面的资料也行!
      

  6.   

    如果通过连接SMTP服务器来验证邮箱是否真实 有个问题是SMTP地址不好弄 正则匹配只是验证邮箱地址是否符合 邮箱的形式 不能验证是否有效 只能用验证邮件 但不一定非要用户打开邮件 检查是否退信也可以间接知道邮件是否真实 当然不太可靠 
      

  7.   

    这个程序是直接验证邮箱是否真实有效的函数,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:<[email protected]> ");
        //使用是请将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; 
    }
    ?>