Heim >Backend-Entwicklung >PHP-Tutorial > 关于smtp发邮件,哪位高手能帮忙看看 503 Error: need EHLO and AUTH first

关于smtp发邮件,哪位高手能帮忙看看 503 Error: need EHLO and AUTH first

WBOY
WBOYOriginal
2016-06-13 13:47:291923Durchsuche

关于smtp发邮件,谁能帮忙看看 503 Error: need EHLO and AUTH first
Resolving SMTP server domain "smtp.qq.com"...
Connecting to host address "119.147.74.45" port 25...
Connected to SMTP server "smtp.qq.com".
S 220 esmtp4.qq.com Esmtp QQ Mail Server
C EHLO localhost
S 250-esmtp4.qq.com
S 250-PIPELINING
S 250-SIZE 52428800
S 250-AUTH LOGIN
S 250-AUTH=LOGIN
S 250 8BITMIME
C MAIL FROM:
C RCPT TO:
C DATA
S 503 Error: need EHLO and AUTH first !
Disconnected.
Cound not send the message to 276190536@qq.com. Error: 503 Error: need EHLO and AUTH first !

------解决方案--------------------
发送邮件前需要登陆
你有没有发登陆信息给smtp.qq.com服务器?
------解决方案--------------------
1) 检查你的QQ邮箱的POP/SMTP功能有没有打开?
2) 有可能你的程序多次登录,被QQ邮箱当作恶意登录给拒绝了,换其他邮箱发送试试看。
3) 贴出你的代码,要不然别人不知道怎么帮你检查
------解决方案--------------------
很可能是你的qq邮箱的设置错误..看看开通了pop3和smtp服务.
------解决方案--------------------
need EHLO and AUTH first !

这个不是说得很清楚了吗?
要先打招呼握手,并请求登陆。

PHP code

if(!$fp=fsockopen($this->smtp['host'],$this->smtp['port'],$errno,$errstr)){
            $this->message[]="连接邮件服务器失败,请检查:\r\n1、服务器地址和端口是否设置正确!\r\n2、网络是否通畅!";
            return false;
        }
        if(strncmp(fgets($fp,512),'220',3)!=0){
            $this->message[]="连接邮件服务器失败,请检查:\r\n1、服务器地址和端口是否设置正确!\r\n2、网络是否通畅!";
            return false;
        }
        if($this->smtp['auth']){
            fwrite($fp,"EHLO ".$this->smtp['posthost']."\r\n");
            while($rt=strtolower(fgets($fp,512))){
                if(strpos($rt,"-")!==3 || empty($rt)){
                    break;
                }elseif(strpos($rt,"2")!==0){
                    $this->message="与服务器招呼握手时错误";
                    return false;
                }
            }
            fwrite($fp, "AUTH LOGIN\r\n");
            if(strncmp(fgets($fp,512),'334',3)!=0){
                $this->message="提示服务器要登陆验证时错误";
                return false;
            }

            fwrite($fp, base64_encode($this->smtp['user'])."\r\n");
            if(strncmp(fgets($fp,512),'334',3)!=0){
                $this->message="SMTP AUTH LOGIN 验证 用户名 错误!";
                return false;
            }
            fwrite($fp, base64_encode($this->smtp['pass'])."\r\n");
            if(strncmp(fgets($fp,512),'235',3)!=0){
                $this->message="SMTP AUTH LOGIN 验证 密码 错误!";
                return false;
            }
        } else{
            fwrite($fp, "HELO ".$this->smtp['posthost']."\r\n");
        }
        $from = $this->smtp['from'];
        $from = preg_replace("/.*\.*/", "\\1", $from);
        fwrite($fp, "MAIL FROM: \r\n");
        if(strncmp(fgets($fp,512),'250',3)!=0){
            $this->message="发信人地址错误!";
            return false;
        }
        fwrite($fp, "RCPT TO: \r\n");
        if(strncmp(fgets($fp,512),'250',3)!=0){
            $this->message="收信人地址错误!";
            return false;
        }
        fwrite($fp, "DATA\r\n");
        if(strncmp(fgets($fp,512),'354',3)!=0){
            $this->message="邮件数据发送失败!";
            return false;
        }
        $msg  = "Date: ".date("r")."\r\n";
        $msg .= "Subject: $send_subject\r\n";
        $msg .= "$additional\r\n";
        $msg .= "$send_message\r\n.\r\n";
        fwrite($fp, $msg);
        $lastmessage = fgets($fp, 512);
        if(substr($lastmessage, 0, 3) != 250){
            $this->message="连接邮件服务器失败,请检查:\r\n1、服务器地址和端口是否设置正确!\r\n2、网络是否通畅!";
            return false;
        }
        fwrite($fp, "QUIT\r\n");
        fclose($fp);
        return true;
 <div class="clear">
                 
              
              
        
            </div>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn