使用 Spring Email 發送郵件時拋出 AuthenticationFailedException,配置文件中郵箱賬號密碼正確,POP/IMAP/SMTP 協議已開啟,測試收發正常,但程式發送即失敗。
QQ 郵箱(及大多數主流郵箱服務商)不再支援直接使用登入密碼進行 SMTP 驗證。需在郵箱設定中開啟「SMTP 服務」並生成專用授權碼,程式中應填入授權碼而非登入密碼。
abcd efgh ijkl mnop)。spring.mail.password 設為該授權碼(去除空格):
spring:
mail:
host: smtp.qq.com
port: 465
username: your_qq@qq.com
password: abcdefghijklmnop # 授權碼,非登入密碼
properties:
mail:
smtp:
auth: true
ssl:
enable: true
socketFactory:
class: javax.net.ssl.SSLSocketFactory
| 郵箱服務商 | 授權碼獲取路徑 |
|---|---|
| 163/126 | 設定 → 客戶端授權密碼 → 開啟 SMTP → 設定授權碼 |
| Gmail | Google 帳號 → 安全性 → 兩步驟驗證 → 應用程式密碼 → 生成 |
| Outlook | 安全性 → 進階安全選項 → 應用程式密碼 → 建立 |
啟動應用後查看日誌,若出現 Authentication successful 或郵件成功發送,即表示授權碼配置正確。
Spring Email 發送失敗且提示認證失敗,若使用 QQ 郵箱等主流服務,請檢查是否使用授權碼而非登入密碼。此為郵箱服務商安全策略調整,非程式碼或配置邏輯錯誤。