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

Spring Email 發送失敗:QQ 郵箱需使用授權碼而非密碼

     編輯:程式設計疑難解答

問題現象

使用 Spring Email 發送郵件時拋出 AuthenticationFailedException,配置文件中郵箱賬號密碼正確,POP/IMAP/SMTP 協議已開啟,測試收發正常,但程式發送即失敗。

根本原因

QQ 郵箱(及大多數主流郵箱服務商)不再支援直接使用登入密碼進行 SMTP 驗證。需在郵箱設定中開啟「SMTP 服務」並生成專用授權碼,程式中應填入授權碼而非登入密碼。

解決步驟

  1. 登入 QQ 郵箱網頁版 → 設定 → 帳號 → 開啟 SMTP 服務(若已開啟可跳過)。
  2. 在同頁面點選 生成授權碼,按提示驗證手機號獲取 16 位授權碼(如 abcd efgh ijkl mnop)。
  3. Spring 配置中將 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
  4. 重啟應用,重新測試發送。

其他常見郵箱授權碼獲取

郵箱服務商授權碼獲取路徑
163/126設定 → 客戶端授權密碼 → 開啟 SMTP → 設定授權碼
GmailGoogle 帳號 → 安全性 → 兩步驟驗證 → 應用程式密碼 → 生成
Outlook安全性 → 進階安全選項 → 應用程式密碼 → 建立

驗證配置是否生效

啟動應用後查看日誌,若出現 Authentication successful 或郵件成功發送,即表示授權碼配置正確。

總結

Spring Email 發送失敗且提示認證失敗,若使用 QQ 郵箱等主流服務,請檢查是否使用授權碼而非登入密碼。此為郵箱服務商安全策略調整,非程式碼或配置邏輯錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved