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

3.7 KiB
Raw Blame History

腾讯云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

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
    

📊 接收的数据格式

邮件发送状态回调

{
  "MessageId": "0000014a-f4d4-4f4f-8f4f-4f4f4f4f4f4f-000000",
  "Status": "Send",
  "Email": "user@example.com",
  "Timestamp": "2024-01-01T12:00:00.000Z"
}

邮件退信回调

{
  "MessageId": "0000014a-f4d4-4f4f-8f4f-4f4f4f4f4f4f-000000",
  "Email": "user@example.com",
  "BounceType": "Permanent",
  "BounceSubType": "General",
  "Timestamp": "2024-01-01T12:00:00.000Z"
}

邮件投诉回调

{
  "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测试

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. 添加邮件模板优化建议