ホームページ >バックエンド開発 >PHPチュートリアル >smtp 経由での電子メールの送信について、専門家が助けてくれますか? 503 エラー: 最初に EHLO と AUTH が必要です。
smtp 経由のメール送信について、503 エラー: 最初に EHLO と AUTH が必要です
SMTP サーバー ドメイン "smtp.qq.com" を解決しています...
ホスト アドレス "119.147.74.45" ポート 25 に接続しています。 ..
SMTP サーバー "smtp.qq.com" に接続しました。
S 220 esmtp4.qq.com Esmtp QQ メール サーバー
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:<839325966@qq. com> ;
C RCPT TO:<276190536@qq.com>
C DATA
S 503 エラー: 最初に EHLO と AUTH が必要です !
切断されました。
メッセージを 276190536 に送信できませんでした@ qq.com エラー: 503 エラー: 最初に EHLO と AUTH が必要です!
-----解決策------ --
メールを送信する前にログインする必要があります
ログイン情報を smtp.qq.com サーバーに送信しましたか?
------解決策------------------
1) QQ メールボックスの POP/SMTP 機能がオンになっているかどうかを確認します。
2) プログラムが複数回ログインし、悪意のあるログインとして QQ メールボックスによって拒否された可能性があります。別のメールボックスに送信してみてください。
3) コードを投稿すると、他の人がコードをチェックする方法がわかりません。
------解決策------------------
QQ メールボックスが正しく設定されていない可能性があります。pop3 サービスと smtp サービスが有効になっているかどうかを確認してください。
------解決策------------------
最初に EHLO と AUTH が必要です!
これは非常に明確ではありませんか?
まず挨拶し、握手をし、ログインを要求する必要があります。
if(!$fp=fsockopen($this->smtp['host'],$this->smtp['port'],$errno,$errstr)){ $this->message[]="メール サーバーに接続できませんでした。以下を確認してください: rn1、サーバーのアドレスとポートが正しく設定されているかどうか! rn2、ネットワークがスムーズかどうか!"; false を返します。 } if(strncmp(fgets($fp,512),'220',3)!=0){ $this->message[]="メール サーバーに接続できませんでした。以下を確認してください: rn1、サーバーのアドレスとポートが正しく設定されているかどうか! rn2、ネットワークがスムーズかどうか!"; false を返します。 } if($this->smtp['auth']){ fwrite($fp,"EHLO ".$this->smtp['posthost']."rn"); while($rt=strto lower(fgets($fp,512))){ if(strpos($rt,"-")!==3 || empty($rt)){ 壊す; }elseif(strpos($rt,"2")!==0){ $this->message="サーバーとの挨拶と握手中にエラーが発生しました"; false を返します。 } } fwrite($fp, "認証ログインrn"); if(strncmp(fgets($fp,512),'334',3)!=0){ $this->message="検証のためにサーバーにログインを求めるときにエラーが発生しました"; false を返します。 } fwrite($fp,base64_encode($this->smtp['user'])."rn"); if(strncmp(fgets($fp,512),'334',3)!=0){ $this->message="SMTP AUTH LOGIN 検証ユーザー名エラー!"; false を返します。 } fwrite($fp,base64_encode($this->smtp['pass'])."rn"); if(strncmp(fgets($fp,512),'235',3)!=0){ $this->message="SMTP AUTH LOGIN 検証パスワードが間違っています!"; false を返します。 } } それ以外{ fwrite($fp, "HELO ".$this->smtp['posthost']."rn"); } $from = $this->smtp['from']; $from = preg_replace("/.*.*/", "\1", $from); fwrite($fp, "MAIL FROM: <$from>rn"); if(strncmp(fgets($fp,512),'250',3)!=0){ $this->message="送信者のアドレスが間違っています!"; false を返します。 } fwrite($fp, "RCPT TO: <$toemail>rn"); if(strncmp(fgets($fp,512),'250',3)!=0){ $this->message="受信者のアドレスが間違っています!"; false を返します。 } fwrite($fp, "DATArn"); if(strncmp(fgets($fp,512),'354',3)!=0){ $this->message="電子メール データの送信に失敗しました!"; false を返します。 } $msg = "日付: ".date("r")."rn"; $msg .= "件名: $send_subjectrn"; $msg .= "$追加rn"; $msg .= "$send_messagern.rn"; fwrite($fp, $msg); $lastmessage = fgets($fp, 512); if(substr($lastmessage, 0, 3) != 250){ $this->message="メール サーバーに接続できませんでした。以下を確認してください: rn1、サーバーのアドレスとポートが正しく設定されているかどうか! rn2、ネットワークがスムーズかどうか!"; false を返します。 } fwrite($fp, "QUITrn"); fclose($fp); true を返します。 <div class="clear"></div>