cursor-init/qq-email-setup.md
HeXiaoLong:Suanier c6a3ad5332 fix: 修复QQ邮箱From字段格式问题
- 修正From字段配置,确保邮箱地址与SMTP认证用户一致

- 添加fromName支持,支持自定义发件人显示名称

- 改进From字段格式化,符合RFC5322标准

- 添加配置验证,防止空邮箱地址错误

- 创建QQ邮箱配置指南和测试demo

解决550 From header错误,完善邮件服务
2025-07-04 18:42:20 +08:00

2.7 KiB
Raw Blame History

QQ邮箱配置指南

🚨 问题原因

错误 550 The "From" header is missing or invalid 是因为QQ邮箱要求

  1. From字段的邮箱地址必须与SMTP认证用户名完全一致
  2. From字段格式必须符合RFC5322标准

⚙️ 正确配置步骤

第一步获取QQ邮箱授权码

  1. 登录 QQ邮箱网页版
  2. 点击右上角 设置账户
  3. 找到 "POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务"
  4. 开启 "IMAP/SMTP服务"
  5. 按提示发送短信验证
  6. 获得16位授权码例如abcdefghijklmnop

第二步:创建.env文件

在项目根目录创建 .env 文件,内容如下:

# QQ邮箱SMTP配置
SMTP_HOST=smtp.qq.com
SMTP_PORT=587
SMTP_SECURE=false

# 认证信息(重要:必须使用相同的邮箱地址)
SMTP_USER=your_qq_email@qq.com
SMTP_PASS=your_16_digit_authorization_code

# 发件人信息重要邮箱地址必须与SMTP_USER一致
SMTP_FROM_EMAIL=your_qq_email@qq.com
SMTP_FROM_NAME=星撰系统

# 其他配置
EMAIL_REPLY_TO=your_qq_email@qq.com

第三步:替换为你的真实信息

示例配置:

SMTP_HOST=smtp.qq.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=123456789@qq.com
SMTP_PASS=abcdefghijklmnop
SMTP_FROM_EMAIL=123456789@qq.com
SMTP_FROM_NAME=星撰系统
EMAIL_REPLY_TO=123456789@qq.com

配置要点

  1. SMTP_USERSMTP_FROM_EMAIL 必须是同一个QQ邮箱
  2. SMTP_PASS 是16位授权码不是QQ登录密码
  3. SMTP_FROM_NAME 可以自定义,这是邮件显示的发件人名称

🧪 测试配置

配置完成后,运行测试:

# 快速测试
bun run quick-email-test.ts your_receive_email@example.com

# 详细测试
bun run src/tests/demo/emailDemo.ts your_receive_email@example.com

🔧 常见问题

Q: 为什么要用授权码而不是QQ密码

A: QQ邮箱的安全策略第三方应用必须使用授权码

Q: 授权码在哪里生成?

A: QQ邮箱设置 → 账户 → 开启IMAP/SMTP服务时生成

Q: 为什么From地址必须与SMTP_USER一致

A: QQ邮箱的反欺诈机制防止伪造发件人

Q: 可以使用其他邮箱服务吗?

A: 可以修改SMTP_HOST即可

  • 163邮箱smtp.163.com
  • Gmailsmtp.gmail.com
  • 企业邮箱:根据提供商配置

📝 配置模板

复制以下内容到 .env 文件:

# 请替换为你的真实信息
SMTP_HOST=smtp.qq.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=替换为你的QQ邮箱@qq.com
SMTP_PASS=替换为你的16位授权码
SMTP_FROM_EMAIL=替换为你的QQ邮箱@qq.com
SMTP_FROM_NAME=星撰系统
EMAIL_REPLY_TO=替换为你的QQ邮箱@qq.com