以前プロジェクトに取り組んでいたときに、phpmailerを使ってメールを送信する機能「PHPmailerと組み合わせてメールを送信するCIフレームワーク」を昨日リリースしました(Sina Cloudを使い始めたばかりですが、あまりにも高価だったので)。 Alibaba に切り替えました。テスト中にメールを送信しましたが、予期せずエラーが報告されました。
オンラインでないときは、毎回正常に動作しました。 SMTP アドレスに問題があるのではないかと思いました (私は 163 のメール アドレスを使用しました)。その後、QQ メールボックスに変更しましたが、それでも機能しないことがわかり、Du Niang に問い合わせるしかありませんでした。 Baidu の回答を見て、「smtp」リクエストを受信する Google の SMTP サーバーを除いて、他のサーバーは私のようなものであることがわかりました。163 を使用する場合、QQ などは大文字の「smtp」リクエストを受信する必要があります。 ... うーん.... それからそれをclass.phpmailer.php
1 public function IsSMTP() { 2 $this->Mailer = 'smtp'; 3 } 4 5 //改成 6 public function IsSMTP() { 7 $this->Mailer = 'SMTP'; 8 }
1 switch($this->Mailer) { 2 case 'sendmail': 3 return $this->SendmailSend($header, $body); 4 case 'smtp': 5 return $this->SmtpSend($header, $body); 6 default: 7 return $this->MailSend($header, $body); 8 } 9 10 11 //改成 12 switch($this->Mailer) { 13 case 'sendmail': 14 return $this->SendmailSend($header, $body); 15 case 'SMTP': 16 return $this->SmtpSend($header, $body); 17 default: 18 return $this->MailSend($header, $body); 19 }
;extension=php_sockets.dll
;extension=php_openssl.dll
以前使用しましたPHPmailer では削除されましたが、ここでは単なるリマインダーです。
次に、fsockopen 関数を置き換えますclass.smtp.php ファイルの fsockopen 関数を pfsockopen 関数に置き換えます:
1 $this->smtp_conn = @fsockopen($host, // the host of the server 2 $port, // the port to use 3 $errno, // error number if any 4 $errstr, // error message if any 5 $tval); // give up after ? secs 6 7 8 //fsockopen改为: 9 $this->smtp_conn = @pfsockopen($host, // the host of the server 10 $port, // the port to use 11 $errno, // error number if any 12 $errstr, // error message if any 13 $tval); // give up after ? secs
以上がSMTP エラーの解決策: phpmailer が電子メールを送信するときに SMTP ホストに接続できませんでしたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。