Webhook 事件字段详情
本文档详细说明各 Event 类型的最终推送字段详情。
1. request(请求事件)
Event 类型:request
说明:请求事件,可能包含多个 emailId,会为每个 emailId 生成一条消息
最终推送字段
| 字段 | 说明 | 是否推送 |
|---|---|---|
| SessionNo | 批次 ID | ✅ |
| MsgId | 邮件唯一 ID | ✅ |
| Event | 事件类型,固定值:"request" | ✅ |
| ReceiptTime | 事件时间戳 | ✅ |
| ReceiptResult | 回执状态,固定值:"request" | ✅ |
| ReceiptCode | 回执状态码 | ✅ |
| ReceiptDesc | 回执描述 | ✅ |
| RecipientEmail | - | ✅ |
| Domain | 发信域名 | ✅ |
| ExplorerName | - | ❌ |
| ExplorerVer | - | ❌ |
| OSName | - | ❌ |
| OSVer | - | ❌ |
| ClickedURL | - | ❌ |
最终推送 JSON 示例
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "request",
"ReceiptTime": 1234567890000,
"ReceiptResult": "request",
"ReceiptCode": "request",
"ReceiptDesc": "Message content",
"RecipientEmail": "user@example.com",
"Domain": "sender.domain.com"
}
]
}
2. deliver(送达事件)
Event 类型:deliver
说明:邮件成功送达事件
最终推送字段
| 字段 | 说明 | 是否推送 |
|---|---|---|
| SessionNo | 批次 ID | ✅ |
| MsgId | 邮件唯一 ID | ✅ |
| Event | 事件类型,固定值:"deliver" | ✅ |
| ReceiptTime | 事件时间戳 | ✅ |
| ReceiptResult | 回执状态,固定值:"deliver" | ✅ |
| ReceiptCode | 回执状态码 | ✅ |
| ReceiptDesc | 回执描述 | ✅ |
| RecipientEmail | 收信人邮箱 | ✅ |
| Domain | 发信域名 | ✅ |
| ExplorerName | - | ❌ |
| ExplorerVer | - | ❌ |
| OSName | - | ❌ |
| OSVer | - | ❌ |
| ClickedURL | - | ❌ |
最终推送 JSON 示例
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "deliver",
"ReceiptTime": 1234567890000,
"ReceiptResult": "deliver",
"ReceiptCode": "0",
"ReceiptDesc": "Message content",
"RecipientEmail": "user@example.com",
"Domain": "sender.domain.com"
}
]
}
3. open(打开事件)
Event 类型:open
说明:邮件被打开事件,包含浏览器和操作系统信息
最终推送字段
| 字段 | 说明 | 是否推送 |
|---|---|---|
| SessionNo | 批次 ID | ✅ |
| MsgId | 邮件唯一 ID | ✅ |
| Event | 事件类型,固定值:"open" | ✅ |
| ReceiptTime | 事件时间戳 | ✅ |
| ReceiptResult | 回执状态,固定值:"open" | ✅ |
| ReceiptCode | 回执状态码 | ✅ |
| ReceiptDesc | 回执描述 | ✅ |
| RecipientEmail | 收信人邮箱 | ✅ |
| Domain | 发信域名 | ✅ |
| ExplorerName | 浏览器名称 | ✅ |
| ExplorerVer | 浏览器版本 | ✅ |
| OSName | 操作系统名称 | ✅ |
| OSVer | 操作系统版本 | ✅ |
| ClickedURL | - | ❌ |
最终推送 JSON 示例
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "open",
"ReceiptTime": 1234567890000,
"ReceiptResult": "open",
"ReceiptCode": "0",
"ReceiptDesc": "Message content",
"RecipientEmail": "user@example.com",
"Domain": "sender.domain.com",
"ExplorerName": "Chrome",
"ExplorerVer": "100.0",
"OSName": "Windows",
"OSVer": "10"
}
]
}
4. click(点击事件)
Event 类型:click
说明:邮件中的链接被点击事件,包含被点击的 URL
最终推送字段
| 字段 | 说明 | 是否推送 |
|---|---|---|
| SessionNo | 批次 ID | ✅ |
| MsgId | 邮件唯一 ID | ✅ |
| Event | 事件类型,固定值:"click" | ✅ |
| ReceiptTime | 事件时间戳 | ✅ |
| ReceiptResult | 回执状态,固定值:"click" | ✅ |
| ReceiptCode | 回执状态码 | ✅ |
| ReceiptDesc | 回执描述 | ✅ |
| RecipientEmail | 收信人邮箱 | ✅ |
| Domain | 发信域名 | ✅ |
| ExplorerName | 浏览器名称 | ✅ |
| ExplorerVer | 浏览器版本 | ✅ |
| OSName | 操作系统名称 | ✅ |
| OSVer | 操作系统版本 | ✅ |
| ClickedURL | 被点击的链接 URL | ✅ |
最终推送 JSON 示例
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "click",
"ReceiptTime": 1234567890000,
"ReceiptResult": "click",
"ReceiptCode": "0",
"ReceiptDesc": "Message content",
"RecipientEmail": "user@example.com",
"Domain": "sender.domain.com",
"ExplorerName": "Chrome",
"ExplorerVer": "100.0",
"OSName": "Windows",
"OSVer": "10",
"ClickedURL": "https://example.com/link"
}
]
}
5. unsubscribe(取消订阅事件)
Event 类型:unsubscribe
说明:用户取消订阅事件
最终推送字段
| 字段 | 说明 | 是否推送 |
|---|---|---|
| SessionNo | 批次 ID | ✅ |
| MsgId | 邮件唯一 ID | ✅ |
| Event | 事件类型,固定值:"unsubscribe" | ✅ |
| ReceiptTime | 事件时间戳 | ✅ |
| ReceiptResult | 回执状态,固定值:"unsubscribe" | ✅ |
| ReceiptCode | 回执状态码 | ✅ |
| ReceiptDesc | 回执描述 | ✅ |
| RecipientEmail | 收信人邮箱 | ✅ |
| Domain | 发信域名 | ✅ |
| ExplorerName | 浏览器名称 | ✅ |
| ExplorerVer | 浏览器版本 | ✅ |
| OSName | 操作系统名称 | ✅ |
| OSVer | 操作系统版本 | ✅ |
| ClickedURL | - | ❌ |
最终推送 JSON 示例
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "unsubscribe",
"ReceiptTime": 1234567890000,
"ReceiptResult": "unsubscribe",
"ReceiptCode": "0",
"ReceiptDesc": "Message content",
"RecipientEmail": "user@example.com",
"Domain": "sender.domain.com",
"ExplorerName": "Chrome",
"ExplorerVer": "100.0",
"OSName": "Windows",
"OSVer": "10"
}
]
}
6. report_spam(垃圾举报事件)
Event 类型:report_spam
说明:邮件被举报为垃圾邮件事件
最终推送字段
| 字段 | 说明 | 是否推送 |
|---|---|---|
| SessionNo | 批次 ID | ✅ |
| MsgId | 邮件唯一 ID | ✅ |
| Event | 事件类型,固定值:"report_spam" | ✅ |
| ReceiptTime | 事件时间戳 | ✅ |
| ReceiptResult | 回执状态,固定值:"report_spam" | ✅ |
| ReceiptCode | 回执状态码 | ✅ |
| ReceiptDesc | 回执描述 | ✅ |
| RecipientEmail | 收信人邮箱 | ✅ |
| Domain | 发信域名 | ✅ |
| ExplorerName | - | ❌ |
| ExplorerVer | - | ❌ |
| OSName | - | ❌ |
| OSVer | - | ❌ |
| ClickedURL | - | ❌ |
最终推送 JSON 示例
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "report_spam",
"ReceiptTime": 1234567890000,
"ReceiptResult": "report_spam",
"ReceiptCode": "0",
"ReceiptDesc": "Message content",
"RecipientEmail": "user@example.com",
"Domain": "sender.domain.com"
}
]
}
7. bounce(退信事件)
Event 类型:bounce
说明:退信事件,包括无法成功投递的邮件,通常由收件方邮箱永久性问题或地址无效导致。
最终推送字段
| 字段 | 说明 | 是否推送 |
|---|---|---|
| SessionNo | 批次 ID | ✅ |
| MsgId | 邮件唯一 ID | ✅ |
| Event | 事件类型,固定值:"bounce" | ✅ |
| ReceiptTime | 事件时间戳 | ✅ |
| ReceiptResult | 回执状态,格式:"bounce",例如:"bounce" | ✅ |
| ReceiptCode | 回执状态码(可能包含子状态码) | ✅ |
| ReceiptDesc | 退信子类描述 | ✅ |
| RecipientEmail | 收信人邮箱 | ✅ |
| Domain | 发信域名 | ✅ |
| ExplorerName | - | ❌ |
| ExplorerVer | - | ❌ |
| OSName | - | ❌ |
| OSVer | - | ❌ |
| ClickedURL | - | ❌ |
最终推送 JSON 示例
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "bounce",
"ReceiptTime": 1778222019000,
"ReceiptResult": "bounce",
"ReceiptCode": "us_bounce_101",
"ReceiptDesc": "Recipient's address does not exist or has moved",
"RecipientEmail": "user@example.com",
"Domain": "sender.domain.com"
}
]
}
8. temporary_issue(临时问题事件)
Event 类型:temporary_issue
说明:软退信事件,包括因临时性原因投递失败的邮件,例如限流或服务器侧拥塞。
最终推送字段
| 字段 | 说明 | 是否推送 |
|---|---|---|
| SessionNo | 批次 ID | ✅ |
| MsgId | 邮件唯一 ID | ✅ |
| Event | 事件类型,固定值:"soft_bounce" | ✅ |
| ReceiptTime | 事件时间戳 | ✅ |
| ReceiptResult | 回执状态,格式:"softbounce{SubStat}",例如:"soft_bounce_409" | ✅ |
| ReceiptCode | 回执状态码(可能包含子状态码) | ✅ |
| ReceiptDesc | 软退信子类描述 | ✅ |
| RecipientEmail | 收信人邮箱 | ✅ |
| Domain | 发信域名 | ✅ |
| ExplorerName | - | ❌ |
| ExplorerVer | - | ❌ |
| OSName | - | ❌ |
| OSVer | - | ❌ |
| ClickedURL | - | ❌ |
最终推送 JSON 示例
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "soft_bounce",
"ReceiptTime": 1234567890000,
"ReceiptResult": "soft_bounce_409",
"ReceiptCode": "409",
"ReceiptDesc": "Soft bounce sub-category description",
"RecipientEmail": "user@example.com",
"Domain": "sender.domain.com"
}
]
}
9. blocked(拦截事件)
Event 类型:blocked
说明:拦截事件,包括因域名声誉、安全策略或 ISP 限制而被拒收的邮件。
最终推送字段
| 字段 | 说明 | 是否推送 |
|---|---|---|
| SessionNo | 批次 ID | ✅ |
| MsgId | 邮件唯一 ID | ✅ |
| Event | 事件类型,固定值:"blocked" | ✅ |
| ReceiptTime | 事件时间戳 | ✅ |
| ReceiptResult | 回执状态,固定值:"blocked" | ✅ |
| ReceiptCode | 回执状态码 | ✅ |
| ReceiptDesc | 拦截原因描述 | ✅ |
| RecipientEmail | 收信人邮箱 | ✅ |
| Domain | 发信域名 | ✅ |
| ExplorerName | - | ❌ |
| ExplorerVer | - | ❌ |
| OSName | - | ❌ |
| OSVer | - | ❌ |
| ClickedURL | - | ❌ |
最终推送 JSON 示例
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "blocked",
"ReceiptTime": 1234567890000,
"ReceiptResult": "blocked",
"ReceiptCode": "us_block_105",
"ReceiptDesc": "The recipient address is on the suppression list",
"RecipientEmail": "user@example.com",
"Domain": "sender.domain.com"
}
]
}
💡 字段推送规则总结
| 字段 | request | deliver | open | click | unsubscribe | report_spam | bounce | temporary_issue | blocked |
|---|---|---|---|---|---|---|---|---|---|
| SessionNo | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| MsgId | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Event | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ReceiptTime | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ReceiptResult | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ReceiptCode | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ReceiptDesc | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| RecipientEmail | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Domain | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ExplorerName | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| ExplorerVer | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| OSName | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| OSVer | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| ClickedURL | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
图例说明:
- ✅ 表示该字段会推送(字段会出现在 JSON 中)
- ❌ 表示该字段不会推送(字段值为空字符串,不会出现在 JSON 中)
💡 推送机制说明
推送配置
- 推送方式:HTTP POST
- Content-Type:application/json
- 重试机制:每个回调地址最多重试 3 次
- 批量推送:支持批量推送多条消息
- 超时设置:可配置请求超时时间(默认 30 秒)
响应格式
客户端需要返回以下格式的 JSON 响应:
{
"code": 0,
"message": "success"
}
code = 0表示成功code != 0表示失败,会触发重试机制