为什么会话需要重建
一个邮箱只是一堆平铺的邮件。对话的结构存在两个头字段里:In-Reply-To 指明被回复的那封邮件,References 则携带一路回到根部的整条链。你的邮件客户端每次给你看一场对话,都是靠它们重新搭出这棵树的。一旦邮件被导出成文件,这份工作就得重做一遍——而大多数能打开导出文件的工具,压根不做这件事。
算法
这里使用 Jamie Zawinski 于 1997 年为 Netscape Mail 写的会话算法,它至今仍是正确答案。每个 Message-ID 一个容器;每封邮件挂到它 References 所指的链上;剪掉空容器;然后——可选地——才启用按主题比对的回退。
按主题回退,以及为什么这是个选择
有些客户端在用户用手机、或用会改写头字段的网页邮箱回复时,会把 References 去掉。这类回复到达时没有任何可依附的线索,比对主题是唯一能把它们找回来的办法。但它有时也会把两封毫无关系、只是共用了一个泛泛主题的邮件并在一起——十二条各自独立的「Re: 开会」会话被合成一条。
所以这是一个开关,默认打开,并且结果旁会显示它吸收了多少个根。如果这个数字很大而会话看起来不对,就关掉它再比较一次。回退只会合并那些看起来像回复的根:两封都不是回复、主题却相同的邮件会被留作两条,因为那远远更可能是两则通知而不是一场对话。
缺失的邮件会被显示出来
当一条会话里所有回复都指向一封不在你所给文件中的邮件时,算法会产生一个没有邮件的容器。这是真实的结果,它会带着 Message-ID 作为树中的一个缺口画出来,而不是被藏起来。藏起来会悄悄把它的回复提到上一层,让这条会话看上去比实际更浅。
格式
EML、Outlook 的 MSG,以及 MBOX 归档,可以任意混合,格式是按字节判断而不是按文件名。MBOX 只按头字段列出,因此一个很大的邮件列表归档远不到一秒就能整理完;只有当你打开某封邮件时,才会完整解析它。
隐私
一切都在你的浏览器中运行。不上传任何文件,也不发出任何网络请求。
Tiny Online Tools







