Email

什么是邮件会话,回复如何保持在同一会话中?

邮件会话通过 In-Reply-To 和 References 请求头将每条消息链接到原始消息 ID,从而将回复保持在一起。

客户端通过检查回复的请求头,将其与之前的消息归为一组。In-Reply-ToReferences 中的消息 ID 使客户端能够显示一个完整的对话。

哪些请求头将回复保持在同一会话中?

回复消息将父消息的 Message-ID 放入 In-Reply-To 中,同时在 References 中携带相关消息 ID 的链条。当多个回复从同一消息分支时,客户端可以据此重建对话。

RFC 5322 第 3.6.4 节指出,In-Reply-To 可以标识新消息所回复的一条或多条消息。References 可以标识会话中的相关消息。

会话回复是什么样的?

一条具有 Message-ID: <m1@example.com> 的消息可以收到带有以下请求头的回复:

In-Reply-To: <m1@example.com>
References: <m1@example.com>

对该回复的再次回复会将新的父消息追加到 References 中:

In-Reply-To: <m2@example.com>
References: <m1@example.com> <m2@example.com>

保持每个 ID 与发送方提供的完全一致。不要为父消息编造新的 ID,也不要用主题行来替代。

请求头示例值作用
Message-ID<reply@example.com>标识当前消息
In-Reply-To<original@example.com>指明所回复的消息
References<original@example.com>携带祖先链

以上值为合成示例。仅凭 Re: 主题无法标识父消息。

回复为何会脱离会话?

In-Reply-ToReferences 缺失或指向其他消息时,客户端可能会开启一个新对话。更改主题也可能影响分组,因为客户端会将请求头与自身的主题规则结合使用。

转发的消息通常是一个新对话。它包含原始内容以提供上下文,但不会自动将原始消息标识为其父消息。

回复发送给作者或 Reply-To 地址。全部回复还会保留原始的 ToCc 收件人,但受发送方邮箱规则约束。客户端仍然可以对消息进行不同的分组或拆分,因为渲染和分组是客户端行为。

如何通过 Bird 保持会话?

通过 Bird 邮箱回复时,对 POST /v1/email/threads/{thread_id}/messages/{message_id}/reply 处收到的消息调用 replyEmailThreadMessage。该操作使用 mailbox 写入权限范围。Bird 会自动派生主题和回复请求头。发出的消息将留在该会话中。要发起新会话,请使用 compose。邮箱指南展示了回复流程和收件 webhook 事件。

如果你的集成发送原始邮件,请将父消息的 Message-ID 保留在 In-Reply-To 中,并将完整链条保留在 References 中。将这些请求头与消息记录一起存储,以便重试时使用相同的关联关系。

总结

  • In-Reply-To 指明所回复的消息。
  • References 携带相关消息链。
  • 缺失或无关的请求头可能会开启一个新对话。
  • Bird 邮箱的回复会留在所收消息的会话中。

基于同一网络构建。

测试 API 密钥即刻获取。添加付款方式并验证发送者身份后,即可解锁生产环境。

从一个渠道开始。
准备好后,再添加其他渠道。

测试 API 密钥即刻可用。添加支付方式并验证发送者身份后,即可解锁生产环境。

正在使用 Claude Code、Cursor 或 Codex?复制一条设置提示,您的智能代理即可自动安装 Bird CLI 和相关技能。选择您的工具:

Cursor