Files
AIGC/demo/EMAIL_SEND_TROUBLESHOOTING.md
AIGC Developer 149b201300 优化邮件发送功能和支付宝支付诊断
- 修复邮件服务区域配置(改为ap-hongkong)
- 增强支付宝支付错误诊断和日志
- 修复代码质量问题(OrderService、ImageToVideoTask)
- 添加支付宝支付问题排查文档
- 增加详细的错误诊断信息
2025-11-03 13:20:30 +08:00

207 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 邮件发送问题诊断指南
## 🔍 问题分析
根据你提供的日志,发现了以下情况:
### 日志分析
**你的日志显示:**
```
INFO ... VerificationCodeService : 邮件验证码发送成功,邮箱: 984523799@qq.com
```
**但是缺少以下关键日志:**
- ❌ 没有看到 "当前邮件模板ID配置: xxx"
- ❌ 没有看到 "未配置邮件模板ID使用开发模式"(开发模式警告)
- ❌ 没有看到 "使用生产模式发送邮件"(生产模式日志)
- ❌ 没有看到 "开始发送邮件,收件人: ..."TencentSesMailService日志
### 可能的原因
1. **配置值未正确读取**
- `template-id=154360` 可能没有被正确读取
- 默认值 `0` 被使用,进入了开发模式
- 但开发模式的警告日志也没有出现
2. **服务使用旧版本代码**
- 可能运行的jar包是旧版本
- 需要重新编译并启动
---
## 🛠️ 诊断步骤
### 步骤1检查配置是否正确读取
我已经更新了代码,添加了更详细的日志。请:
1. **重新编译项目**
```bash
cd demo
mvn clean package
```
2. **重新启动服务**
```bash
java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
```
3. **再次测试发送验证码**
4. **查看新的日志输出**,应该能看到:
```
INFO ... VerificationCodeService : 当前邮件模板ID配置: 154360
INFO ... VerificationCodeService : 使用生产模式发送邮件,收件人: xxx@qq.com, 模板ID: 154360
INFO ... TencentSesMailService : 开始发送邮件,收件人: xxx@qq.com, 主题: 验证码, 模板ID: 154360
```
### 步骤2检查配置文件
确认 `application-dev.properties` 中的配置:
```properties
tencent.ses.template-id=154360
```
**注意:**
- 确保没有空格
- 确保值是正确的数字
- 确保配置文件被正确加载(使用 `--spring.profiles.active=dev`
### 步骤3检查日志输出
**如果看到:**
```
INFO 当前邮件模板ID配置: 0
WARN 未配置邮件模板ID使用开发模式
```
**说明:** 配置值没有正确读取使用的是默认值0。
**解决方案:**
1. 检查配置文件路径
2. 确认使用的是dev配置`--spring.profiles.active=dev`
3. 检查配置文件名是否正确
**如果看到:**
```
INFO 当前邮件模板ID配置: 154360
INFO 使用生产模式发送邮件,收件人: xxx@qq.com, 模板ID: 154360
INFO 开始发送邮件,收件人: xxx@qq.com, 主题: 验证码, 模板ID: 154360
ERROR 邮件验证码发送失败,邮箱: xxx@qq.com
```
**说明:** 配置正确,但邮件发送失败。
**常见错误:**
1. **发信地址未验证**
```
InvalidParameter.EmailAddressNotVerified
```
**解决:** 在腾讯云SES控制台验证 `newletter@vionow.com`
2. **模板ID不存在或未审核**
```
ResourceNotFound.TemplateNotFound
```
**解决:** 确认模板ID 154360 已审核通过
3. **权限不足**
```
InvalidSecretId.InvalidSignature
```
**解决:** 检查SecretID/SecretKey是否正确是否有SES服务权限
4. **额度不足**
```
余额不足
```
**解决:** 充值或检查免费额度
---
## 🚀 快速测试方案
### 方案1临时使用开发模式测试
如果发信地址未验证或需要快速测试登录功能,可以临时切换到开发模式:
1. **修改配置文件**
```properties
tencent.ses.template-id=0
```
2. **重新编译并启动**
```bash
mvn clean package
java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
```
3. **测试发送验证码**
- 会看到日志:`开发模式:邮件验证码发送到: xxx@qq.com, 验证码: 123456`
- 从日志中获取验证码用于登录测试
### 方案2检查SES配置状态
1. **访问SES控制台**
- 发信地址管理https://console.cloud.tencent.com/ses/address
- 邮件模板管理https://console.cloud.tencent.com/ses/template
2. **确认以下状态:**
- [ ] `newletter@vionow.com` 状态为"已验证"
- [ ] 模板ID `154360` 状态为"已审核"
- [ ] SES服务有可用额度
---
## 📝 诊断检查清单
请按照以下顺序检查:
- [ ] **1. 配置检查**
- 配置文件 `application-dev.properties` 中存在 `tencent.ses.template-id=154360`
- 没有多余空格或特殊字符
- [ ] **2. 编译检查**
- 执行了 `mvn clean package`
- 编译成功,没有错误
- [ ] **3. 启动检查**
- 使用 `--spring.profiles.active=dev` 启动
- 启动日志中没有配置相关的错误
- [ ] **4. 日志检查**
- 重新启动后,测试发送验证码
- 查看日志中是否有新的详细信息
- [ ] **5. SES配置检查**
- 发信地址已验证
- 模板ID已审核
- 有可用额度
---
## 🔧 下一步操作
1. **立即执行:**
```bash
cd demo
mvn clean package
java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
```
2. **再次测试发送验证码**
3. **查看新的日志输出**,告诉我你看到了什么日志信息
4. **根据新的日志信息,我可以进一步帮你诊断问题**
---
## ⚠️ 重要提示
**当前代码已更新,添加了更详细的日志输出。请重新编译并启动服务,然后再次测试。新的日志会帮助我们准确定位问题。**