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