title: Mailbox HTTP API 收发流程
Mailbox HTTP API 收发流程
这页按“创建邮箱 → 确认可见邮箱 → 收信 → 发信 → 回复”的顺序说明典型调用方式。
1. 创建邮箱并拿到 bootstrap token
curl -X POST https://mailbox.feinian.net/api/mailboxes \
-H "Content-Type: application/json" \
-d '{
"address": "support@example.com",
"displayName": "Support"
}'
重点字段:
mailbox.mailboxIdmailbox.addressinitialAccessTokeninitialAccessTokenIdinitialAccessTokenExpiresAtTs
说明:
- 这个入口不要求先带 token
- 创建成功后会直接返回 bootstrap token
2. 查看当前可见邮箱
curl https://mailbox.feinian.net/api/mailboxes \
-H "Authorization: Bearer <token>"
语义:
mailbox token返回绑定邮箱domain token返回域下可见邮箱列表
3. 拉取消息列表
curl "https://mailbox.feinian.net/api/messages?mailboxAddress=support@example.com&limit=100" \
-H "Authorization: Bearer <token>"
重要说明:
GET /api/messages现在返回分页对象:items、nextCursor、totalCount- 默认
limit=100,最大limit=200 - 继续拉下一页时,把上一次返回的
nextCursor作为新的cursor - 可选
direction=inbound或direction=outbound domain token必须显式传mailboxAddress- 这是 breaking change:旧数组响应已废弃
4. 读取单封消息
curl https://mailbox.feinian.net/api/messages/REPLACE_MESSAGE_ID \
-H "Authorization: Bearer <token>"
常见字段:
messageIdthreadIddirectionsubjectfromAddresstoAddressbodyTextattachmentsinReplyToMessageId
5. 读取完整线程
curl https://mailbox.feinian.net/api/threads/REPLACE_THREAD_ID \
-H "Authorization: Bearer <token>"
适合:
- 回复前还原上下文
- 一次拉完整线程消息
6. 标记消息已读或未读
curl -X PUT https://mailbox.feinian.net/api/messages/REPLACE_MESSAGE_ID/read-state \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"isRead": true
}'
说明:
isRead: true表示标记已读isRead: false表示恢复未读domain token不需要额外传mailboxAddress,只要该消息属于可见 mailbox
7. 批量更新读状态
curl -X POST https://mailbox.feinian.net/api/messages/bulk-read-state \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"ids": ["message-a", "message-b"],
"isRead": true
}'
说明:
- 单次最多 10000 个消息 ID
- 返回
succeededItems与failedItems - 允许部分成功
8. 软删除单封消息
curl -X DELETE https://mailbox.feinian.net/api/messages/REPLACE_MESSAGE_ID \
-H "Authorization: Bearer <token>"
说明:
- 删除后该消息不会再出现在 public list/detail/thread 可见结果中
- 重复删除同一条消息会返回幂等成功,并标记
alreadyDeleted
9. 批量软删除消息
curl -X POST https://mailbox.feinian.net/api/messages/bulk-delete \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"ids": ["message-a", "message-b"]
}'
说明:
- 单次最多 10000 个消息 ID
- 返回
succeededItems与failedItems - 已删除消息会在成功项中返回
alreadyDeleted: true
10. 发起新邮件
curl -X POST https://mailbox.feinian.net/api/messages/send \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"mailboxAddress": "support@example.com",
"toAddress": "user@example.net",
"subject": "Hello",
"bodyText": "Hi from Mailbox.",
"ccAddresses": [],
"bccAddresses": [],
"attachmentIds": []
}'
说明:
- 成功返回
202 Accepted - 表示消息已入队
- 不表示远端邮箱已签收
domain token通常必须显式传mailboxAddress
11. 回复已有邮件
curl -X POST https://mailbox.feinian.net/api/messages/REPLACE_MESSAGE_ID/reply \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"mailboxAddress": "support@example.com",
"subject": "Re: Hello",
"bodyText": "Thanks for your message.",
"ccAddresses": [],
"bccAddresses": [],
"attachmentIds": []
}'
重要约束:
- 回复时
mailboxAddress必须与父消息所属邮箱一致 domain token也必须显式传mailboxAddress
轮询建议
因为当前没有 webhook,推荐这样处理:
- 初次启动先全量拉取最近消息
- 本地按
messageId去重 - 优先按
receivedAtTs排序 - 高频邮箱提高轮询频率,避免最近窗口被覆盖
实时提示场景可配合: