gpt4 book ai didi

regex - 为基于 Web 的邮件列表存档编码 Gmail 样式 "hide quoted text"

转载 作者:行者123 更新时间:2023-12-04 08:01:20 25 4
gpt4 key购买 nike

我正在开发一个 web 应用程序,它以线程格式(除其他外)解析和显示电子邮件。电子邮件可能来自任意数量的不同邮件客户端,可以是文本格式,也可以是 HTML 格式。

鉴于大多数人都有置顶的倾向,我希望能够以类似于 Gmail 的方式(例如“显示引用的文本”)在电子邮件回复中隐藏重复的消息。

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

然后我注意到 Outlook 默认不使用 "> "字符,它只是在回复上方添加一个标题块,其中包含标题摘要(发件人、主题、日期等)。回复无动于衷。我可以对此进行匹配并隐藏电子邮件的其余部分,并假设它是顶级引用。

然后我查看了 Thunderbird,它使用“>”表示文本,而 <blockquote > 用于 HTML 邮件。我还没有研究过 Apple Mail 的作用、Notes 的作用,或者其他数百万个邮件客户端的作用。

我会为那里的每个客户编写一个特殊的正则表达式吗?还是我遗漏了什么?

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

最佳答案

很难复制 gmail 的方式,因为它不关心它是否是引用的文章,就像扎克说的那样,它似乎只关心差异。

实际上很难 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 消息。

编辑:我是根据编写电子邮件处理系统的经验以及看到几个人尝试做您正在做的事情来说明这一点的。它总是只得到“ok”的结果。

关于regex - 为基于 Web 的邮件列表存档编码 Gmail 样式 "hide quoted text",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/535655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com