正则表达式 – 为基于Web的邮件列表存档编写Gmail样式“隐藏引用文本”

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

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

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

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

然后我查看了Thunderbird,它使用“>”作为文本,< blockquote>用于HTML邮件.我还没有看过Apple Mail的功能,Notes做了什么,或者其他数百万邮件客户端做了什么.

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

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

复制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消息,包括结构和头部内容.

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

相关文章
相关标签/搜索