Files
AIGC/demo/SES_WEBHOOK_CONFIG.md
AIGC Developer a13ff70055 feat: 实现邮箱验证码登录和腾讯云SES集成
- 实现邮箱验证码登录功能,支持自动注册新用户
- 修复验证码生成逻辑,确保前后端验证码一致
- 添加腾讯云SES webhook回调接口,支持6种邮件事件
- 配置ngrok内网穿透支持,允许外部访问
- 优化登录页面UI,采用全屏背景和居中布局
- 清理调试代码和未使用的导入
- 添加完整的配置文档和测试脚本
2025-10-23 17:50:12 +08:00

139 lines
3.7 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.

# 腾讯云SES Webhook配置指南
## 📧 **SES Webhook接口说明**
系统已创建了完整的SES webhook接口来接收腾讯云SES服务的推送数据。
### 🔗 **Webhook接口列表**
| 接口路径 | 功能描述 | 触发时机 |
|---------|---------|---------|
| `POST /api/email/send-status` | 邮件发送状态回调 | 邮件发送成功/失败时 |
| `POST /api/email/delivery-status` | 邮件投递状态回调 | 邮件投递到收件人邮箱时 |
| `POST /api/email/bounce` | 邮件退信回调 | 邮件无法投递时 |
| `POST /api/email/complaint` | 邮件投诉回调 | 收件人投诉为垃圾邮件时 |
| `POST /api/email/open` | 邮件打开事件回调 | 收件人打开邮件时 |
| `POST /api/email/click` | 邮件点击事件回调 | 收件人点击邮件链接时 |
| `POST /api/email/configuration-set` | 配置集事件回调 | 配置集状态变化时 |
### 🌐 **ngrok配置示例**
#### 1. 启动ngrok穿透后端端口8080
```bash
ngrok http 8080
```
#### 2. 获取ngrok公网地址
ngrok会显示类似
```
Forwarding https://abc123.ngrok.io -> http://localhost:8080
```
#### 3. 在腾讯云SES控制台配置Webhook
- 登录腾讯云SES控制台
- 进入"配置集"管理
- 添加事件发布目标
- 配置webhook URL
```
https://abc123.ngrok.io/api/email/send-status
https://abc123.ngrok.io/api/email/delivery-status
https://abc123.ngrok.io/api/email/bounce
https://abc123.ngrok.io/api/email/complaint
https://abc123.ngrok.io/api/email/open
https://abc123.ngrok.io/api/email/click
https://abc123.ngrok.io/api/email/configuration-set
```
### 📊 **接收的数据格式**
#### 邮件发送状态回调
```json
{
"MessageId": "0000014a-f4d4-4f4f-8f4f-4f4f4f4f4f4f-000000",
"Status": "Send",
"Email": "user@example.com",
"Timestamp": "2024-01-01T12:00:00.000Z"
}
```
#### 邮件退信回调
```json
{
"MessageId": "0000014a-f4d4-4f4f-8f4f-4f4f4f4f4f4f-000000",
"Email": "user@example.com",
"BounceType": "Permanent",
"BounceSubType": "General",
"Timestamp": "2024-01-01T12:00:00.000Z"
}
```
#### 邮件投诉回调
```json
{
"MessageId": "0000014a-f4d4-4f4f-8f4f-4f4f4f4f4f4f-000000",
"Email": "user@example.com",
"ComplaintType": "abuse",
"Timestamp": "2024-01-01T12:00:00.000Z"
}
```
### 🔧 **系统处理逻辑**
#### 发送状态处理
- **Send**: 记录发送成功
- **Reject**: 记录发送被拒绝
- **Bounce**: 记录退信情况
#### 退信处理
- **硬退信**: 考虑从邮件列表移除
- **软退信**: 稍后重试发送
#### 投诉处理
- 记录投诉信息
- 检查邮件内容合规性
- 考虑移除问题邮箱
### 📝 **日志记录**
所有webhook事件都会记录到系统日志中包括
- 事件类型
- 邮件地址
- 时间戳
- 相关参数
### 🛡️ **安全配置**
- 所有webhook接口已配置为允许匿名访问
- 建议在生产环境中添加签名验证
- 可以添加IP白名单限制
### 🚀 **测试方法**
#### 1. 使用curl测试
```bash
curl -X POST https://your-ngrok-url.ngrok.io/api/email/send-status \
-H "Content-Type: application/json" \
-d '{
"MessageId": "test-123",
"Status": "Send",
"Email": "test@example.com",
"Timestamp": "2024-01-01T12:00:00.000Z"
}'
```
#### 2. 查看日志
检查应用日志确认webhook事件被正确处理
```
INFO - 收到邮件发送状态回调: {MessageId=test-123, Status=Send, Email=test@example.com}
INFO - 邮件发送状态 - MessageId: test-123, Status: Send, Email: test@example.com
```
### 📋 **后续扩展**
可以根据业务需求扩展webhook处理逻辑
1. 添加数据库存储
2. 实现邮件发送统计
3. 添加用户行为分析
4. 实现自动重试机制
5. 添加邮件模板优化建议