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

349 lines
10 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.

# 邮件登录模块配置清单
## 一、已配置项 ✅
### 1. 开发环境配置application-dev.properties
-`tencent.ses.secret-id` - SecretID已配置
-`tencent.ses.secret-key` - SecretKey已配置
-`tencent.ses.region` - 服务区域ap-beijing
-`tencent.ses.from-email` - 发信地址newletter@vionow.com
-`tencent.ses.from-name` - 发件人名称AIGC平台
-`tencent.ses.template-id` - 模板ID154360生产模式
### 2. 代码实现
- ✅ 邮箱验证码登录接口(`/api/auth/login/email`
- ✅ 发送验证码接口(`/api/verification/email/send`
- ✅ 验证码服务VerificationCodeService
- ✅ 腾讯云SES邮件服务TencentSesMailService
- ✅ 前端登录页面Login.vue
- ✅ 用户名密码登录已禁用
---
## 二、需要检查/更新项 ⚠️
### 1. 腾讯云SES服务权限检查 ⚠️ **重要**
**当前配置的账号信息:**
- 主账号ID: `100040185043`
- 用户名: `test`
- SecretID: `AKIDXw8HBtNfjdJm480xljV4QZUDi05wa0DE`
- SecretKey: `tZyHMDsKadS4ScZhhU3PYUErGUVIqBIB`
**需要确认:**
- [ ] **SecretID/SecretKey 是否有效**
- 检查密钥是否过期或被撤销
- 访问https://console.cloud.tencent.com/cam/capi
- [ ] **是否有SES服务访问权限**
- 子账号需要有SES邮件推送服务的访问权限
- 如果没有权限,需要在主账号中授权
**检查步骤:**
1. 登录腾讯云控制台
2. 进入"访问管理" → "API密钥管理"
3. 检查密钥状态
4. 检查子账号权限策略
---
### 2. 发信地址验证 ⚠️ **重要(生产环境必需)**
**当前配置:**
- 发信地址: `newletter@vionow.com`
**需要操作:**
- [ ] **确认发信地址是否已验证**
- 访问https://console.cloud.tencent.com/ses/address
- 检查 `newletter@vionow.com` 的状态
- 如果状态为"未验证"或"验证失败"
**验证步骤:**
1. 进入SES控制台 → "发信地址"
2. 点击"创建发信地址"或编辑现有地址
3. 输入邮箱:`newletter@vionow.com`
4. 腾讯云会发送验证邮件到该邮箱
5. 点击邮件中的验证链接完成验证
6. 确认状态变为"已验证"
**注意:**
- ⚠️ 只有验证通过的邮箱才能发送邮件
- ⚠️ 开发模式template-id=0不需要验证也能测试但不会实际发邮件
- ⚠️ 生产模式必须有已验证的发信地址
---
### 3. 邮件模板配置 ✅ **已配置**
**当前状态:**
- `template-id=154360` - 生产模式(已配置)
**当前配置:**
- ✅ 模板ID已配置为 `154360`
- ✅ 系统将使用生产模式,实际发送邮件
**模板说明:**
- 模板ID: `154360`
- 模式: 生产模式(会实际发送邮件)
- 验证码变量: 模板中应包含 `{{code}}` 变量用于替换验证码
---
### 4. 生产环境配置 ⚠️ **缺失**
**当前状态:**
`application-prod.properties` 中**没有腾讯云SES配置**
**需要添加:**
- [ ] **在生产环境配置文件中添加SES配置**
**操作步骤:**
`demo/src/main/resources/application-prod.properties` 中添加:
```properties
# 腾讯云SES配置 (生产环境)
tencent.ses.secret-id=${TENCENT_SES_SECRET_ID}
tencent.ses.secret-key=${TENCENT_SES_SECRET_KEY}
tencent.ses.region=ap-beijing
tencent.ses.from-email=${TENCENT_SES_FROM_EMAIL}
tencent.ses.from-name=AIGC平台
tencent.ses.template-id=${TENCENT_SES_TEMPLATE_ID}
```
**环境变量设置:**
```bash
export TENCENT_SES_SECRET_ID=你的SecretID
export TENCENT_SES_SECRET_KEY=你的SecretKey
export TENCENT_SES_FROM_EMAIL=newletter@vionow.com
export TENCENT_SES_TEMPLATE_ID=你的模板ID
```
---
### 5. SES服务开通和额度 ⚠️ **重要**
**需要确认:**
- [ ] **SES服务是否已开通**
- 访问https://console.cloud.tencent.com/ses
- 检查服务状态
- [ ] **是否有可用额度**
- 检查账户余额或免费额度
- 确认是否有足够的邮件发送配额
- 查看计费信息
**检查步骤:**
1. 登录腾讯云控制台
2. 进入SES服务控制台
3. 查看"概览"页面的配额和用量信息
4. 确认是否有可用额度
---
### 6. 测试验证 ⚠️ **重要**
**开发模式测试:**
- [ ] **启动服务并测试**
```bash
cd demo
./mvnw spring-boot:run
```
- [ ] **测试发送验证码**
```bash
curl -X POST http://localhost:8080/api/verification/email/send \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com"}'
```
- [ ] **检查邮箱**
- 应该收到实际邮件包含6位数字验证码
- 邮件来自newletter@vionow.com
- [ ] **测试登录**
- 访问登录页面
- 输入邮箱和验证码
- 验证登录功能
**生产模式测试(已完成配置):**
- [x] ✅ **Template-id已配置为154360**
- [ ] **重启服务**(如果服务正在运行)
- [ ] **发送测试邮件**
- [ ] **检查实际邮箱是否收到邮件**
---
## 三、配置优先级
### 🔴 紧急(必须配置)
1. **发信地址验证** - 生产环境必须验证才能发送邮件
2. **邮件模板创建** - 生产环境必须配置模板ID
3. **生产环境配置** - `application-prod.properties` 缺少SES配置
### 🟡 重要(建议配置)
4. **SES服务权限检查** - 确保账号有权限访问SES服务
5. **SES服务开通和额度** - 确保有可用配额
6. **测试验证** - 确保功能正常(会实际发送邮件)
7. **发信地址验证** - 确保 newletter@vionow.com 已验证
---
## 四、配置检查清单
### 开发环境配置状态
| 配置项 | 状态 | 说明 |
|--------|------|------|
| SecretID | ✅ 已配置 | 需确认有效性和权限 |
| SecretKey | ✅ 已配置 | 需确认有效性 |
| Region | ✅ 已配置 | ap-beijing |
| From-email | ✅ 已配置 | newletter@vionow.com需确认已验证 |
| From-name | ✅ 已配置 | AIGC平台 |
| Template-id | ✅ 已配置 | 154360生产模式 |
### 生产环境配置状态
| 配置项 | 状态 | 说明 |
|--------|------|------|
| SecretID | ❌ 未配置 | 需要添加环境变量 |
| SecretKey | ❌ 未配置 | 需要添加环境变量 |
| Region | ❌ 未配置 | 需要添加配置 |
| From-email | ❌ 未配置 | 需要添加环境变量 |
| From-name | ❌ 未配置 | 需要添加配置 |
| Template-id | ❌ 未配置 | 需要创建模板并配置ID |
---
## 五、快速检查命令
### 检查配置文件
```bash
# Windows PowerShell
Test-Path demo/src/main/resources/application-dev.properties
Test-Path demo/src/main/resources/application-prod.properties
# 检查SES配置项
Select-String -Path "demo/src/main/resources/application-dev.properties" -Pattern "tencent.ses"
```
### 测试邮件发送功能
```bash
# 开发模式测试(不会实际发送邮件)
curl -X POST http://localhost:8080/api/verification/email/send \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com"}'
# 检查日志中的验证码
# 应该看到:开发模式:邮件验证码发送到: test@example.com, 验证码: XXXXXX
```
### 测试登录功能
```bash
# 使用开发接口设置验证码(开发模式)
curl -X POST http://localhost:8080/api/verification/email/dev-set \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","code":"123456"}'
# 测试登录
curl -X POST http://localhost:8080/api/auth/login/email \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","code":"123456"}'
```
---
## 六、常见问题
### Q1: 当前配置为生产模式
**A:** 当前模板ID已配置为154360生产模式系统会实际发送邮件。请确保
- 发信地址 `newletter@vionow.com` 已验证
- SES服务有可用额度
- 模板ID 154360 在腾讯云SES控制台已审核通过
### Q2: 发送失败 - 认证错误
```
InvalidSecretId.InvalidSignature
```
**解决:**
- 检查SecretID和SecretKey是否正确
- 确认密钥是否有SES服务权限
- 检查密钥是否过期
### Q3: 发送失败 - 发信地址未验证
```
InvalidParameter.EmailAddressNotVerified
```
**解决:**
- 在SES控制台验证发信地址
- 检查 `tencent.ses.from-email` 配置是否正确
- 注意开发模式template-id=0不需要验证也能测试
### Q4: 发送失败 - 模板不存在
```
ResourceNotFound.TemplateNotFound
```
**解决:**
- 确认模板ID是否正确
- 检查模板是否已审核通过
- 确认模板区域与配置的region一致
### Q5: 当前已是生产模式
**A:** 当前已配置为生产模式template-id=154360系统会实际发送邮件。如需切换回开发模式将template-id设置为0即可。
---
## 七、下一步操作建议
### 当前配置(生产模式)
1. ✅ **模板ID已配置为154360**(生产模式)
2. ⚠️ **验证发信地址**(重要)
- 确保 `newletter@vionow.com` 在SES控制台已验证
- 访问https://console.cloud.tencent.com/ses/address
3. ⚠️ **测试实际发送邮件**
- 重启服务(如果正在运行)
- 发送测试验证码
- 检查邮箱是否收到邮件
4. ⚠️ **更新生产环境配置**
- 在 `application-prod.properties` 中已添加SES配置
- 设置环境变量 `TENCENT_SES_TEMPLATE_ID=154360`
---
## 八、相关文档链接
- **腾讯云SES控制台**: https://console.cloud.tencent.com/ses
- **发信地址管理**: https://console.cloud.tencent.com/ses/address
- **邮件模板管理**: https://console.cloud.tencent.com/ses/template
- **API密钥管理**: https://console.cloud.tencent.com/cam/capi
- **SES文档**: https://cloud.tencent.com/document/product/1288
- **邮箱验证登录指南**: `EMAIL_VERIFICATION_LOGIN_GUIDE.md`
- **SES启动检查清单**: `TENCENT_SES_STARTUP_CHECKLIST.md`
---
## 九、总结
### 当前状态
- ✅ **开发环境配置已完成**包括模板ID 154360
- ✅ **生产模式已启用**template-id=154360会实际发送邮件
- ⚠️ **需要确保发信地址已验证**
### 最小启动要求
1. ✅ SecretID和SecretKey已配置
2. ✅ From-email地址已配置newletter@vionow.com
3. ✅ Template-id=154360生产模式已配置
### 生产环境要求
1. ⚠️ 已验证的发信地址newletter@vionow.com
2. ✅ 已配置的邮件模板ID: 154360
3. ✅ 生产环境配置文件中的SES配置已添加
4. ⚠️ 有效的SecretID/SecretKey和SES服务权限需确认
**当前状态:** 已配置为生产模式,会实际发送邮件。请确保:
- 发信地址 `newletter@vionow.com` 已验证
- 模板ID 154360 已审核通过
- SES服务有可用额度