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