ホームページ >バックエンド開発 >PHPチュートリアル >電子メール クライアントは動作しているのに、PHPMailer コードが SMTP ホストに接続できないのはなぜですか?
PHPMailer の「SMTP エラー: SMTP ホストに接続できませんでした」障害の克服
人気の PHP メール送信ライブラリである PHPMailer は、エラー「SMTP エラー: SMTP ホストに接続できませんでした。」この問題は、Thunderbird などの電子メール クライアントを介して電子メールを正常に送信できる場合でも発生することがあります。
トラブルシューティングを行うには、動作中の Thunderbird 構成で使用されている設定を調べ、PHPMailer で使用されている設定と比較します。次の表は、主な違いを示しています:
Setting | Thunderbird | PHPMailer |
---|---|---|
Server Name | mail.exampleserver.com | SMTP_HOST |
Port | 587 | SMTP_PORT |
Username | [email protected] | SMTP_USER |
Secure Authentication | No | SMTPAuth |
Connection Security | STARTTLS | Not specified |
提供される PHPMailer コード:
$mail = new PHPMailer(); $mail->IsSMTP(); $mail->Host = SMTP_HOST; $mail->Port = SMTP_PORT; $mail->SMTPAuth = true; $mail->Username = SMTP_USER; $mail->Password = SMTP_PASSWORD; $mail->From = MAIL_SYSTEM; $mail->FromName = MAIL_SYSTEM_NAME; $mail->AddAddress($aSecuredGetRequest['email']); $mail->IsHTML(true);
これらの設定は、動作する Thunderbird 設定と似ていますが、主な違いは、 PHPMailer コード内の接続セキュリティ仕様。この問題を解決するには、PHPMailer スクリプトに次の行を追加します。
$mail->SMTPSecure = 'STARTTLS';
この行は、SMTP サーバーへの接続で STARTTLS 暗号化を使用することを指定します。この調整が完了すると、PHPMailer スクリプトは電子メールを正常に送信できるようになります。
注: PHPMailer バージョン 5.6 以降の使用時に証明書の検証の失敗に関連するエラーが発生した場合は、次の回避策:
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
この回避策は一時的な措置である必要があることに注意してください。根本的な証明書の問題には置き換えて解決する必要があります。無効な証明書と有効な証明書。
以上が電子メール クライアントは動作しているのに、PHPMailer コードが SMTP ホストに接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。