优化邮件发送功能和支付宝支付诊断

- 修复邮件服务区域配置(改为ap-hongkong)
- 增强支付宝支付错误诊断和日志
- 修复代码质量问题(OrderService、ImageToVideoTask)
- 添加支付宝支付问题排查文档
- 增加详细的错误诊断信息
This commit is contained in:
AIGC Developer
2025-11-03 13:20:30 +08:00
parent b5bbd8841e
commit 149b201300
15 changed files with 1264 additions and 121 deletions

View File

@@ -0,0 +1,206 @@
# 邮件发送问题诊断指南
## 🔍 问题分析
根据你提供的日志,发现了以下情况:
### 日志分析
**你的日志显示:**
```
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. **根据新的日志信息,我可以进一步帮你诊断问题**
---
## ⚠️ 重要提示
**当前代码已更新,添加了更详细的日志输出。请重新编译并启动服务,然后再次测试。新的日志会帮助我们准确定位问题。**