# QQ邮箱配置指南 ## 🚨 问题原因 错误 `550 The "From" header is missing or invalid` 是因为QQ邮箱要求: 1. **From字段的邮箱地址必须与SMTP认证用户名完全一致** 2. **From字段格式必须符合RFC5322标准** ## ⚙️ 正确配置步骤 ### 第一步:获取QQ邮箱授权码 1. 登录 [QQ邮箱网页版](https://mail.qq.com/) 2. 点击右上角 **设置** → **账户** 3. 找到 **"POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务"** 4. 开启 **"IMAP/SMTP服务"** 5. 按提示发送短信验证 6. 获得16位授权码(例如:`abcdefghijklmnop`) ### 第二步:创建.env文件 在项目根目录创建 `.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 ``` ### 第三步:替换为你的真实信息 **示例配置:** ```env 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_USER** 和 **SMTP_FROM_EMAIL** 必须是同一个QQ邮箱 2. **SMTP_PASS** 是16位授权码,不是QQ登录密码 3. **SMTP_FROM_NAME** 可以自定义,这是邮件显示的发件人名称 ## 🧪 测试配置 配置完成后,运行测试: ```bash # 快速测试 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` - Gmail:`smtp.gmail.com` - 企业邮箱:根据提供商配置 ## 📝 配置模板 复制以下内容到 `.env` 文件: ```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 ```