我正在尝试编写一个定期接收电子邮件的应用程序。它将每封邮件写入数据库。但有时我会收到像这样的“Re:”电子邮件:
新消息
在2010年9月21日24:26,有人写道(a):
| 旧消息 |
格式取决于电子邮件提供商。
是否有任何库可以帮助从电子邮件消息中删除'Re'部分?也许IMAP服务器可以做到这一点?我已经在数据库中拥有所有先前的邮件线程,因此我可以获取它们并在新邮件中搜索。
个人认为你在这里运气不佳,因为消息副本是正文的一部分。因此,为了删除它,您将需要处理消息正文,并为每种已知格式编写提取方法(显然问题在于您无法知道所有可能的格式)。
所以,为什么不将整个消息持久化到数据库中,而不是解析正文呢?通常情况下,现代DBMS应该不会出现消息大小的问题。如果确实存在问题,您可以始终压缩正文并将其存储在BLOB中。
From: <receipent>
From: "NAME" <receipent>
From: receipent
你需要省略掉下面这行的部分,但仅仅检查这一点是不够的,因为通常 from 后面会跟着主语、抄送人、收件人等,所以需要检查模式。我认为可能存在一些开源项目或文本库,但在谷歌上找到它们太困难了。
我同意Obalix的观点。过滤回复太难了,所以必须保留整个消息。但是,当您向用户呈现电子邮件时,可以隐藏其中的某些部分。这些部分可以用可选的“单击此处查看完整消息”或类似选项显示。例如,用于过滤'>'字符的正则表达式应该类似于@"^[ \f\t\v>]*"