首頁 >後端開發 >php教程 >為什麼我的電子郵件用戶端工作時,我的 PHPMailer 程式碼無法連線到 SMTP 主機?

為什麼我的電子郵件用戶端工作時,我的 PHPMailer 程式碼無法連線到 SMTP 主機?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-02 12:22:10226瀏覽

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

克服PHPMailer 的「SMTP 錯誤:無法連接到SMTP 主機」障礙

PHPMailer,一個流行的PHP 郵件發送庫,有時會發送庫拋出錯誤「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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn