Files
AIGC/demo/TENCENT_SES_PERMISSION_FIX.md

105 lines
3.1 KiB
Markdown
Raw Normal View History

# 腾讯云SES权限配置指南
## 问题描述
当前错误:
```
AuthFailure.UnauthorizedOperation
you are not authorized to perform operation (ses:SendEmail)
resource (*) has no permission
```
这个错误表示您的腾讯云访问密钥没有发送邮件的权限。
## 解决方案
### 方案1在腾讯云控制台配置权限推荐
1. **登录腾讯云控制台**
- 访问https://console.cloud.tencent.com/
2. **进入访问管理CAM**
- 在控制台顶部搜索"访问管理"或"CAM"
- 或者直接访问https://console.cloud.tencent.com/cam
3. **配置子账号权限**
- 如果使用的是子账号密钥需要为该子账号添加SES权限
- 进入"用户" → 找到对应用户 → 点击"授权"
- 搜索"SES"或"邮件推送"
- 添加策略:`QcloudSESFullAccess`SES全读写访问权限
- 或者使用自定义策略,只授予`ses:SendEmail`权限
4. **如果使用主账号密钥**
- 主账号默认拥有所有权限
- 如果仍然报错,可能是密钥错误或已禁用
- 检查:访问管理 → API密钥管理 → 查看密钥状态
5. **验证配置**
- 权限配置后可能需要几分钟生效
- 重新启动应用并测试
### 方案2使用开发模式临时方案
如果您在开发环境测试,可以暂时使用开发模式:
1. **修改配置文件** `application-dev.properties`
```properties
# 设置为0以使用开发模式不发送真实邮件仅在日志中记录验证码
tencent.ses.template-id=0
```
2. **开发模式行为**
- 不会调用腾讯云SES API
- 验证码会记录在日志中
- 可以直接使用日志中的验证码进行测试
### 方案3创建自定义CAM策略精细化权限
如果您只想授予发送邮件权限,可以创建自定义策略:
1. **进入CAM策略管理**
- 访问https://console.cloud.tencent.com/cam/policy
2. **创建自定义策略**
```json
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": [
"ses:SendEmail"
],
"resource": "*"
}
]
}
```
3. **将策略绑定到子账号**
- 进入"用户" → 找到对应用户 → 点击"授权"
- 选择刚创建的自定义策略
## 当前配置信息
根据您的配置文件:
- **SecretID**: `AKIDXw8HBtNfjdJm480xljV4QZUDi05wa0DE`
- **区域**: `ap-beijing`
- **发信地址**: `newletter@vionow.com`
- **模板ID**: `154360`
## 检查清单
- [ ] 验证发信地址 `newletter@vionow.com` 已在腾讯云SES控制台验证通过
- [ ] 验证模板ID `154360` 存在且已审核通过
- [ ] 验证访问密钥所属账号具有SES发送邮件权限
- [ ] 验证密钥未过期或被禁用
- [ ] 等待权限配置生效通常1-2分钟
## 相关文档
- [腾讯云SES权限说明](https://cloud.tencent.com/document/product/1288/45321)
- [CAM策略语法](https://cloud.tencent.com/document/product/598/10603)
- [发信地址验证指南](https://cloud.tencent.com/document/product/1288/68353)