侧边栏壁纸
  • 累计撰写 75 篇文章
  • 累计创建 22 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

QQ邮箱SMTP配置指南

七月流火
2026-05-08 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

快速配置表

配置项

SMTP 服务器

smtp.qq.com

端口(SSL)

465

端口(TLS/STARTTLS)

587

协议

smtp

用户名

完整QQ邮箱地址,如 xxxx@qq.com

密码

不是QQ密码!是授权码

启用SSL


核心:获取授权码

为什么需要授权码?

QQ邮箱出于安全考虑,第三方客户端(如 KonMail、Java程序等)不能直接使用QQ密码登录,必须使用授权码

获取步骤

  1. 登录 QQ 邮箱 → 点击顶部「设置」

  2. 切换到「账户」标签

  3. 向下滚动找到「POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务」

  4. 开启「SMTP服务」(如果已开启,建议先关闭再重新开启)

  5. 按提示用手机发短信验证

  6. 验证成功后会显示一个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...

最常见!

可能原因

解决方案

用了 QQ 密码而非授权码

改用授权码

授权码已过期

重新生成授权码

SMTP服务已关闭

重新开启SMTP服务

用户名只填了 yuanxiu 没填完整邮箱

必须填 xxxx@qq.com

发件人和登录邮箱不一致

from 必须和 username 一致

2. 连接超时 / 连接被拒绝

原因

解决

端口用了 25

改用 465(SSL)

阿里云/腾讯云服务器封了25端口

必须用 465 端口

防火墙拦截

开放465端口出站

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 字段必须等于登录邮箱,否则会被拒绝。


相关链接

0

评论区