You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MailKit中收件箱与已发送邮件的关联及未回复邮件获取方法

获取未被回复邮件的替代方案

针对InReplyTo字段无法覆盖所有已回复邮件的问题,可以尝试以下几种方法:

  • 利用References字段关联邮件对话
    多数邮件客户端在回复时,会在References头中包含原始邮件的Message-ID,甚至整个对话的邮件ID链。你可以遍历收件箱的所有邮件,记录每封邮件的Message-ID,然后检查是否存在其他邮件的InReplyTo或References包含这个ID——如果没有,说明该邮件未被回复。这个字段的覆盖范围比InReplyTo更广,能解决部分InReplyTo为null的情况。

  • 读取邮件客户端的自定义状态属性
    像Outlook这类客户端会给已回复的邮件添加特定的MAPI属性标记:比如PR_LAST_VERB_EXECUTED(属性标签为0x10810003),当值为102时代表邮件已被回复。用JavaMail或其他邮件库可以直接读取这类扩展属性,以此判断邮件状态。示例代码片段:

    // 读取Outlook的已回复标记
    Integer verb = (Integer) msg.getHeader("http://schemas.microsoft.com/mapi/proptag/0x10810003")[0];
    boolean isReplied = verb != null && verb == 102;
    
  • 分析邮件主题前缀
    绝大多数回复邮件的主题会带有Re:、回复:、FW:(转发也算关联互动)这类前缀。你可以提取原邮件的核心主题(去掉可能存在的前缀),然后在收件箱中搜索是否有主题包含该核心内容的邮件。虽然这种方法存在用户手动修改主题的误差,但可以作为前两种方法的补充。

  • 通过Thread-Index字段分组对话
    部分邮件系统(如Exchange)会使用Thread-Index头字段,同一对话的所有邮件会共享关联的Thread-Index值。你可以按这个字段对邮件分组,若某组中只有原始邮件、没有其他后续邮件,则判定该邮件未被回复。

内容的提问来源于stack exchange,提问作者Anrew Vishnyakov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:11:12