使用Google SMTP服务器(已用应用密码)仍报用户名密码不接受错误
问题描述
尝试配置Spring Boot应用通过Google SMTP服务器发送通知,已生成App Password,但发送时始终提示认证失败。
应用配置(application.yaml)
mail: host: smtp.gmail.com port: 587 username: <username> password: <app-password> properties: mail: smtp: auth: true starttls: enable: true debug: true
控制台错误日志
DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false 220 smtp.gmail.com ESMTP z21-20020a19f715000000b004eb44dae858sm1433785lfe.52 - gsmtp DEBUG SMTP: connected to host "smtp.gmail.com", port: 587 EHLO Igor-PC 250-smtp.gmail.com at your service, [37.145.40.200] 250-SIZE 35882577 250-8BITMIME 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250 SMTPUTF8 DEBUG SMTP: Found extension "SIZE", arg "35882577" DEBUG SMTP: Found extension "8BITMIME", arg "" DEBUG SMTP: Found extension "STARTTLS", arg "" DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg "" DEBUG SMTP: Found extension "PIPELINING", arg "" DEBUG SMTP: Found extension "CHUNKING", arg "" DEBUG SMTP: Found extension "SMTPUTF8", arg "" STARTTLS 220 2.0.0 Ready to start TLS EHLO Igor-PC 250-smtp.gmail.com at your service, [37.145.40.200] 250-SIZE 35882577 250-8BITMIME 250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250 SMTPUTF8 DEBUG SMTP: Found extension "SIZE", arg "35882577" DEBUG SMTP: Found extension "8BITMIME", arg "" DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH" DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg "" DEBUG SMTP: Found extension "PIPELINING", arg "" DEBUG SMTP: Found extension "CHUNKING", arg "" DEBUG SMTP: Found extension "SMTPUTF8", arg "" DEBUG SMTP: protocolConnect login, host=smtp.gmail.com, user=<username>, password=<non-null> DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2 DEBUG SMTP: Using mechanism LOGIN DEBUG SMTP: AUTH LOGIN command trace suppressed DEBUG SMTP: AUTH LOGIN failed 30959 [http-nio-9000-exec-1] WARN o.a.a.s.u.RestorePasswordServiceImpl - Authentication failed; nested exception is javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 https://support.google.com/mail/?p=BadCredentials z21-20020a19f715000000b004eb44dae858sm1433785lfe.52 - gsmtp
多次重置App Password仍无法解决,请问问题出在哪里?
解决方案
按以下步骤逐一排查:
- 确认两步验证已开启:生成App Password的前提是Google账户必须开启两步验证,未开启的话生成的密码无效。
- 核对App Password生成参数:生成时应用类别选「Mail」,设备选「Other (Custom name)」,确保生成的是适用于邮件服务的密码。
- 检查用户名和密码格式:用户名必须是完整的Gmail邮箱地址(如xxx@gmail.com),App Password是16位无空格字符串,避免复制时带入多余字符。
- 补充SMTP安全配置:在
application.yaml中添加SSL信任及超时配置,优化连接稳定性:mail: properties: mail: smtp: ssl: trust: smtp.gmail.com connectiontimeout: 5000 timeout: 5000 writetimeout: 5000 - 检查账户安全状态:登录Google账户安全中心,确认近期是否有异常登录拦截,若有需允许当前设备/IP的访问。
- 升级JavaMail版本:确保
spring-boot-starter-mail依赖的JavaMail为最新稳定版,旧版本可能存在认证兼容性问题。
内容的提问来源于stack exchange,提问作者Igor
相关产品推荐
相关产品推荐

