当前位置:  开发笔记 > 前端 > 正文

为基于Web的邮件列表存档编写Gmail样式"隐藏引用文本"

如何解决《为基于Web的邮件列表存档编写Gmail样式"隐藏引用文本"》经验,为你挑选了1个好方法。

我正在开发一个Web应用程序,它以线程格式(以及其他内容)解析和显示电子邮件消息.电子邮件可能来自任何数量的不同邮件客户端,可以是文本或HTML格式.

鉴于大多数人都倾向于发帖,我希望能够以类似于Gmail的方式隐藏电子邮件回复中的重复邮件(例如"显示引用的文字").

确定消息的哪一部分是回复是有点挑战性的.就个人而言,我在回复时在引用文本的开头使用">"分隔符.我创建了一个正则表达式,它查找这些行并在它们周围包装一个div,以允许一些JS隐藏或显示这个文本块.

然后我注意到Outlook默认情况下不使用">"字符,它只是在回复上方添加一个标题块,其中包含标题摘要(From,Subject,Date等).回复没有动摇.我可以对此进行匹配并隐藏电子邮件的其余部分,并假设它是最高报价.

然后我查看了Thunderbird,它使用">"表示文本,而>表示HTML邮件.我还没有看过Apple Mail的功能,Notes做了什么,或者其他数百万邮件客户端做了什么.

我会为每个客户编写一个特殊的案例正则表达式吗?还是有什么我想念的?

任何建议,示例代码或第三方库指针非常感谢!



1> Richard Leva..:

复制gmail的方式很难,因为它不关心它是否是一个被引用的作品,如Zac所说,它似乎只关心差异.

实际上,100%的时间都很难做到这一点.纯文本电子邮件是"有损"的,它完全可以发送给您

> Here is my long line that is over 74 chars (email line length limit)

哪个可以编码为类似的东西

> Here is my long line that is over 74 chars (email=
 line length limit)

然后被解码

> Here is my long line that is over 74 chars (email
line length limit)

使其与内联回复无法区分.

这是电子邮件,所以变化比比皆是.电子邮件通常以74个字符进行换行,编码方案可能不同.它是一个真正的PITA.如果您可以访问HTML版本,那么您可能会更好地寻找报价标签等.另一个想法是解析纯文本和html版本以尝试确定边界.

此外,最好只计划特定的客户端黑客.它们都在结构和标题内容中以不同方式构造mime消息.

编辑:我说这是根据编写电子邮件处理系统的经验,以及看到有几个人尝试做你正在做的事情.它总是只有"好"的结果.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有