# 腾讯云SES邮件服务启动检查清单

## ✅ 启动前必需准备项

### 1. 腾讯云账号和凭证 ⚠️ **必需**

#### 获取步骤：
1. **登录腾讯云控制台**
   - 访问：https://console.cloud.tencent.com
   - 如无账号，需先注册

2. **获取API密钥**
   - 访问：https://console.cloud.tencent.com/cam/capi
   - 创建或查看API密钥
   - 获取以下信息：
     ```
     SecretID: 例如 AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA
     SecretKey: 例如 Gu5t9xGARNpqDXcd3I4WZkFpAALPVZ7pKbNScfFsj
     ```

3. **开通SES（邮件推送）服务**
   - 访问：https://console.cloud.tencent.com/ses
   - 确保服务已开通
   - 查看是否有免费额度或已充值

### 2. 配置发信地址 ⚠️ **必需**

#### 配置步骤：
1. **创建发信地址**
   - 在SES控制台的"发信地址"中创建
   - 输入你的邮箱地址（例如：noreply@yourdomain.com）

2. **验证发信地址**
   - 腾讯云会向该邮箱发送验证邮件
   - 点击邮件中的验证链接完成验证
   - ⚠️ **重要**：只有验证通过的邮箱才能发送邮件

3. **记录已验证的发信地址**
   - 例如：`noreply@vionow.com`
   - 配置到 `application-dev.properties` 中的 `tencent.ses.from-email`

### 3. 创建邮件模板 ⚠️ **必需（生产环境）**

#### 配置步骤：
1. **访问模板管理**
   - 在SES控制台的"邮件模板"中创建

2. **创建模板**
   - 模板类型：选择"触发邮件"或"批量邮件"
   - 模板内容示例：
     ```
     您的验证码是：{{code}}
     验证码有效期5分钟，请勿泄露给他人。
     如果不是您本人操作，请忽略此邮件。
     ```
   - 在模板中使用 `{{变量名}}` 来定义可替换的变量

3. **记录模板ID**
   - 创建成功后，在模板列表中找到模板ID
   - 例如：`12345`
   - 配置到 `application-dev.properties` 中的 `tencent.ses.template-id`

### 4. 配置文件更新 ⚠️ **必需**

#### 更新 `demo/src/main/resources/application-dev.properties`：

```properties
# 腾讯云SES配置
tencent.ses.secret-id=你的SecretID                    # ⚠️ 必须配置
tencent.ses.secret-key=你的SecretKey                  # ⚠️ 必须配置
tencent.ses.region=ap-beijing                         # 可选，默认beijing
tencent.ses.from-email=已验证的发信地址               # ⚠️ 必须配置
tencent.ses.from-name=AIGC平台                        # 可选
tencent.ses.template-id=0                            # 0=开发模式，实际模板ID=生产模式
```

#### 当前配置状态检查：
- ✅ SecretID: 已配置（`AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA`）
- ✅ SecretKey: 已配置
- ✅ Region: 已配置（`ap-beijing`）
- ✅ From-email: 已配置（`noreply@vionow.com`）
- ⚠️ Template-id: 当前为 `0`（开发模式）

### 5. Maven依赖检查 ✅ **已完成**

项目已包含腾讯云SDK依赖：
```xml
<dependency>
    <groupId>com.tencentcloudapi</groupId>
    <artifactId>tencentcloud-sdk-java</artifactId>
    <version>3.1.880</version>
</dependency>
```
✅ 无需额外操作

## 📋 快速检查清单

启动前请确认：

- [ ] ✅ 腾讯云账号已注册
- [ ] ✅ 已获取SecretID和SecretKey
- [ ] ✅ 已开通SES邮件推送服务
- [ ] ✅ 已创建并验证发信地址
- [ ] ✅ 配置文件 `application-dev.properties` 已更新正确的凭证
- [ ] ✅ 发信地址已配置到 `tencent.ses.from-email`
- [ ] ⚠️ 生产环境：已创建邮件模板并获取模板ID

## 🚀 启动步骤

### 方式1：开发模式启动（无需模板，推荐先测试）

**特点**：
- 不需要创建邮件模板
- 不会实际发送邮件
- 验证码会在日志中显示
- 适合本地开发测试

**配置**：
```properties
tencent.ses.template-id=0  # 保持为0
```

**启动**：
```bash
cd demo
./mvnw spring-boot:run
# 或
mvn spring-boot:run
```

**测试**：
```bash
# 调用发送验证码接口
curl -X POST http://localhost:8080/api/verification/email/send \
  -H "Content-Type: application/json" \
  -d '{"email":"your-email@example.com"}'
```

**查看日志**：
```
WARN  未配置邮件模板ID，使用开发模式。验证码: 123456, 邮箱: your-email@example.com
INFO  开发模式：邮件验证码发送到: your-email@example.com, 验证码: 123456
```

### 方式2：生产模式启动（需要模板）

**特点**：
- 实际发送邮件
- 需要配置模板ID
- 需要已验证的发信地址

**配置**：
```properties
tencent.ses.template-id=你的模板ID  # 例如: 12345
```

**启动**：
```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":"your-email@example.com"}'
```

**查看日志**：
```
INFO  开始发送邮件，收件人: your-email@example.com, 主题: 验证码, 模板ID: 12345
INFO  邮件发送成功，收件人: your-email@example.com, 消息ID: xxx
```

## 🔍 启动后验证

### 1. 检查服务是否正常启动
```bash
# 查看启动日志，确认没有错误
# 应该看到类似信息：
# Started DemoApplication in X.XXX seconds
```

### 2. 测试邮件发送功能
```bash
# 方式1：使用curl
curl -X POST http://localhost:8080/api/verification/email/send \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com"}'

# 方式2：使用前端页面
# 访问注册/登录页面，输入邮箱，点击发送验证码
```

### 3. 检查日志输出
- **开发模式**：应该看到"开发模式"相关日志
- **生产模式**：应该看到"邮件发送成功"或错误信息

## ⚠️ 常见问题排查

### 问题1：启动时报配置错误
```
Could not resolve placeholder 'tencent.ses.secret-id'
```
**解决**：检查 `application-dev.properties` 文件是否存在并配置了所有必需项

### 问题2：发送失败 - 认证错误
```
InvalidSecretId.InvalidSignature
```
**解决**：
- 检查SecretID和SecretKey是否正确
- 确认没有多余的空格或特殊字符

### 问题3：发送失败 - 发信地址未验证
```
InvalidParameter.EmailAddressNotVerified
```
**解决**：
- 确认发信地址已在腾讯云SES控制台验证
- 检查 `tencent.ses.from-email` 配置是否正确

### 问题4：发送失败 - 模板不存在
```
ResourceNotFound.TemplateNotFound
```
**解决**：
- 确认模板ID是否正确
- 检查模板是否在正确的区域创建
- 确认模板状态为"已审核通过"

### 问题5：开发模式下收不到邮件
**这是正常的！**
开发模式（template-id=0）不会实际发送邮件，只会在日志中显示验证码。

## 📝 当前配置状态

根据 `application-dev.properties`：

| 配置项 | 状态 | 说明 |
|--------|------|------|
| SecretID | ✅ 已配置 | 需要确认是否正确 |
| SecretKey | ✅ 已配置 | 需要确认是否正确 |
| Region | ✅ 已配置 | ap-beijing |
| From-email | ✅ 已配置 | noreply@vionow.com |
| Template-id | ⚠️ 开发模式 | 当前为0，如需实际发送需配置模板ID |

## 🎯 推荐启动流程

### 第一步：开发模式测试（推荐先做）
1. ✅ 确保SecretID和SecretKey已配置
2. ✅ 确保from-email已配置（即使未验证也可先测试）
3. ✅ 保持template-id=0
4. ✅ 启动服务
5. ✅ 测试发送验证码接口
6. ✅ 查看日志确认功能正常

### 第二步：配置真实发送（如需要）
1. ✅ 在腾讯云SES控制台验证发信地址
2. ✅ 创建邮件模板并获取模板ID
3. ✅ 更新template-id配置
4. ✅ 重启服务
5. ✅ 测试实际发送邮件

## 📚 参考资源

- 腾讯云SES控制台：https://console.cloud.tencent.com/ses
- API密钥管理：https://console.cloud.tencent.com/cam/capi
- 腾讯云SES文档：https://cloud.tencent.com/document/product/1288

## ✅ 总结

**最小启动要求**：
1. ✅ SecretID和SecretKey（已配置）
2. ✅ From-email地址（已配置，需确认已验证）
3. ✅ Template-id=0（开发模式，已配置）

**当前状态**：**可以直接启动**（开发模式）

如果需要实际发送邮件，需要：
- 验证发信地址
- 创建邮件模板并配置template-id


