故事很简单:一个用户创建了一个新讨论,系统向其他用户发送电子邮件通知。当这些用户回复通知时,他们的回复应作为评论正确路由到特定讨论。
当系统发送电子邮件通知时,主题中包含路由代码。例如,通知的主题可能如下所示:"讨论"让我们谈谈"已开始{123}
"。由于所有电子邮件客户端都使用Re: ORIGINAL SUBJECT
因此我们会{123}
作为主题的一部分返回,解析它并知道将评论放在哪里。
我们已经可以工作了(实际上已经有好几年了),但是当前的实现看起来有点脏(尤其是当代码变长时),所以我们想探索替代方案(如果有的话)。是否有一种更优雅的方法可以解决这个问题,在大多数电子邮件客户端上可靠地工作?我们可能缺少的电子邮件标题?类似的东西?
非常感谢
既然你没有提到它,我不确定你是否调查过这个:
电子邮件标头中有一个名为 In-Reply-To
的字段,它应该包含邮件正在回复的电子邮件的邮件 ID 和一个名称References
,该名称应指定此邮件所属的线程:
"回复:"字段可用于标识邮件(或
消息),新消息是对其的回复,而
"引用:"字段可用于标识
谈话。
根据 rfc,In-Reply-To
字段应包含"父"消息的Message-Id
,而References
字段将引用父消息的References
字段。
此字段的问题在于无法保证其中有一些有用的东西,因为它们不需要正确填写以进行邮件传递,因此某些邮件客户端可能无法正确填写它们,甚至可能根本不填写。
我找到了这篇关于使用 In-Reply-To 字段构建线程算法的文章,并声称对这些字段中的垃圾和恶意输入具有健壮性。