克服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中文網其他相關文章!