快速配置表
核心:获取授权码
为什么需要授权码?
QQ邮箱出于安全考虑,第三方客户端(如 KonMail、Java程序等)不能直接使用QQ密码登录,必须使用授权码。
获取步骤
登录 QQ 邮箱 → 点击顶部「设置」
切换到「账户」标签
向下滚动找到「POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务」
开启「SMTP服务」(如果已开启,建议先关闭再重新开启)
按提示用手机发短信验证
验证成功后会显示一个16位授权码
⚠️ 只显示一次! 立即复制保存好
旧的授权码会失效,用新的
KonMail 配置示例
smtp:
host: smtp.qq.com
port: 465
username: xxxx@qq.com # 必须是完整邮箱,不能只填用户名
password: xxxxxxxxxxxxxxxx # 填授权码,不是QQ密码
ssl: true
from: xxxx@qq.com # 必须和username一致Spring Boot 配置示例
spring:
mail:
host: smtp.qq.com
port: 465
username: xxxx@qq.com
password: xxxxxxxxxxxxxxxx # 授权码
protocol: smtp
default-encoding: UTF-8
properties:
mail:
smtp:
auth: true
ssl:
enable: true
socketFactory:
class: javax.net.ssl.SSLSocketFactory
port: 465常见报错 & 解决方案
1. 535 Login fail. Account is abnormal...
最常见!
2. 连接超时 / 连接被拒绝
3. 553 Mail from must equal authorized user
发件人邮箱地址和登录邮箱不一致,必须一致:
// 正确
from: "xxxx@qq.com"
username: "xxxx@qq.com"
// 错误
from: "service@company.com"
username: "xxxx@qq.com"4. 登录频率限制
QQ邮箱有频率限制:
每分钟 ≤ 20 封
每小时 ≤ 100 封
每天 ≤ 500 封
如果触发限制,等 1-2 小时再试。
最佳实践
1. 测试授权码有效性
在配置前,先在 KonMail 或其他邮件客户端测试一下授权码是否有效,再写到代码配置里。
2. 不要硬编码授权码
放到环境变量
放到配置中心(如 Nacos)
Java 项目用
@Value("${spring.mail.password}")读取
3. 发件人和登录邮箱一致
QQ邮箱强制要求 from 字段必须等于登录邮箱,否则会被拒绝。
评论区