例如,如果原始消息(消息1)是......
嘿乔恩,
想要去买些披萨吗? - 比尔
回复(消息2)是......
比尔,
对不起,我今天不能吃午饭 Jonathon Parks,Acme Systems首席技术官2010年2月24日星期三下午4:43,Bill Waters写道:
>嘿约翰,
>想要去买些披萨吗? > -Bill
在Gmail中,系统(a)检测到消息2是对消息1的回复并将其转换为各种“线程”并且(b)检测其中消息的回复部分实际上是并且从用户隐藏它。 (在这种情况下,隐藏部分将从“On Wed,Feb ...”开始,并继续到消息的结尾。)
显然,在这个简单的例子中,很容易检测到“On< Date>,< Name> write:”或“>”字符前缀。但是许多电子邮件系统都有许多不同风格的标记回复(更不用说HTML电子邮件)了。我觉得你必须要有一些该死的智能字符串解析算法才能获得接近GMail的好处。
这项技术是否已存在于某个开源项目中?在一些专门用于这个或者可能在一些开源电子邮件客户端中执行类似消息线程的库中?
感谢。
答案 0 :(得分:1)
Zawinski写了一篇很好的文章:
答案 1 :(得分:0)
我认为Gmail的工作原理是主题标题。我目前无法检查它,但快速更改标题可能会破坏线程。
如您所述,以下内容很难预测:
On Wed, Feb 24, 2010 at 4:43 PM, Bill Waters wrote:
但抓住电子邮件标题Pizza tomorrow
并假设前缀为Re: Pizza tomorrow
则更具可预测性。您还可以假设FW:
和RE:
(大写字母)的情况。
答案 2 :(得分:0)
您的意思是解决通讯员未设置In-Reply-To:或References:标题字段的问题?
否则,您可以使用mutt并将其配置为默认情况下不显示引号。
(也应该由地球上的任何其他邮件工具完成。(好吧,我从未在Outlook中获得树线程视图。)
[以下编辑以回应评论]
如果您尝试构建自己的软件,那么这个问题显然很适合。但是,我只能给你我的2c。如果你不能依赖显式标题,那么唯一要做的就是拿一堆邮件,学习用于表示引号的最常用短语。 (幸运的是,有一些约定,日期格式和名称/电子邮件并不完全是任意的。)
如果您这样做是为了分析通信线程,您可能想要指出关系的可能性。如果你只是为了方便用户而做...嗯,...我的个人意见?不要为那些不能使用体面的邮件工具的人而流汗。
答案 3 :(得分:0)
您使用的是哪种Mail Delivery Agent?
你在开发自己的吗?在这种情况下,您打算实施IMAP协议吗?
如果您使用Cyrus(或任何其他处理IMAP的产品)与SORT and THREAD extensions,那么它已经内置。
在这两种情况下,您都应该看看RFC 5256。
答案 4 :(得分:-1)
你可以看一下sup http://freshmeat.net/articles/sup-gmail-meets-the-console,因为它几乎可以实现你的想法