首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

網站註冊郵件發送 SMTP Error: Could not authenticate 解決方案

     編輯:程式設計綜合問答

異常含義

SMTP Error: Could not authenticate —— **SMTP 服務器拒絕認證**,常見原因:用戶名/密碼錯誤、加密方式不匹配、端口錯誤、服務器禁用低安全應用、雙因子認證未用應用專用密碼。

排查清單

  1. 用戶名/密碼:確認郵箱賬號、密碼/授權碼正確(QQ/163/Gmail 需開啟 SMTP 服務並生成授權碼)。
  2. 加密/端口:
    • SSL: 465(隱式 SSL)
    • TLS/STARTTLS: 587(顯式 TLS)
    • 無加密: 25(多被封禁)
    • 代碼中 SmtpClient.EnableSsl = true 對應 587,false 對應 465/25(視庫而定)。
  3. 服務器設置**:
    • Gmail:開啟「兩步驗證」→ 生成「應用專用密碼」作為 SMTP 密碼。
    • QQ/163:郵箱設置 → 開啟 SMTP/IMAP → 獲取授權碼。
    • 企業郵箱:咨詢管理員是否限制發信 IP/頻率。
  4. 代碼庫細節:
    • PHPMailer: $mail->SMTPAuth = true; $mail->SMTPSecure = 'tls'; $mail->Port = 587;
    • JavaMail: props.put("mail.smtp.starttls.enable", "true");
    • C# SmtpClient: client.EnableSsl = true; client.Port = 587;

常見誤區:修改 php.ini / class.smtp.php

網上流傳「將 fsockopen 改 pfsockopen」屬**舊版 PHPMailer 針對特定環境的 Hack**,現代版本(6.x+)已內建連接復用,**不建議修改源碼**。優先按上述清單排查配置。

測試驗證

  • 用 telnet smtp.qq.com 587 或 openssl s_client -connect smtp.qq.com:465 手工對話驗證連通性。
  • 郵箱 Web 端發信正常 → 問題在代碼配置;Web 端也失敗 → 賬號/服務器問題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved