ホームページ >バックエンド開発 >PHPチュートリアル >電子メール クライアントは動作しているのに、PHPMailer コードが SMTP ホストに接続できないのはなぜですか?

電子メール クライアントは動作しているのに、PHPMailer コードが SMTP ホストに接続できないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-02 12:22:10215ブラウズ

Why Does My PHPMailer Code Fail to Connect to the SMTP Host, While My Email Client Works?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。