feat: 实现邮箱验证码登录和腾讯云SES集成
- 实现邮箱验证码登录功能,支持自动注册新用户 - 修复验证码生成逻辑,确保前后端验证码一致 - 添加腾讯云SES webhook回调接口,支持6种邮件事件 - 配置ngrok内网穿透支持,允许外部访问 - 优化登录页面UI,采用全屏背景和居中布局 - 清理调试代码和未使用的导入 - 添加完整的配置文档和测试脚本
This commit is contained in:
138
demo/SES_WEBHOOK_CONFIG.md
Normal file
138
demo/SES_WEBHOOK_CONFIG.md
Normal file
@@ -0,0 +1,138 @@
|
||||
# 腾讯云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. 添加邮件模板优化建议
|
||||
Reference in New Issue
Block a user