代码之家  ›  专栏  ›  技术社区  ›  Łukasz W.

从回复邮件中删除上一部分

  •  6
  • Łukasz W.  · 技术社区  · 14 年前

    |旧消息 |

    是否有任何库可以帮助从电子邮件中删除“Re”部分?也许IMAP服务器可以做到?我有所有以前的电子邮件从线程在数据库中,所以我可以采取他们和搜索新的消息。

    4 回复  |  直到 14 年前
        1
  •  1
  •   AxelEckenberger    14 年前

    我个人认为你在这里运气不好,因为信息副本是身体的一部分。因此,为了删除它,您必须处理消息体并为每个已知格式编写一个提取方法(显然,问题是您不可能知道所有可能的格式)。

    因此,与其解析正文,不如将整个消息持久化到数据库中?通常消息的大小不应该是现代DBMS的问题。如果真的有问题,你总是可以压缩身体并把它储存在一个小水滴里。

        2
  •  2
  •   Justin Holzer    14 年前

    此外,电子邮件提供者可以向回复中引用的消息的开头添加某些头字段或前导码。在这种情况下,我不认为有任何“包罗万象”的解决办法。

    我的建议是针对一些真正庞大的网络邮件提供商(Gmail、Yahoo、Microsoft等),学习他们的回复格式,并相应地解析邮件。此外,您可能还可以处理一些通用格式。例如,“>”字符通常用在回复中每行引用文本的开头。

    IReplyFormat ,每个提供程序都有相应的实现,可能还有一些通用格式。

        3
  •  0
  •   Akash Kava    14 年前
    1. 没有IMAP服务器不会也不会删除任何内容
    2. 这样的库并不存在,因为没有标准,每个电子邮件提供商都有不同的做法,gmail等都开发了自己的工具
    3. 你必须寻找一种模式,以收件人作为发件人的邮件头开始,比如。。。
    From: <receipent>
    From: "NAME" <receipent>
    From: receipent
    

        4
  •  0
  •   SlavaGu    14 年前

    我同意奥巴利克斯的观点。过滤掉回复太难了,所以必须保留整个信息。但是,当您向用户显示电子邮件时,可以隐藏其中的某些部分。这些部分可以通过可选的“单击此处查看完整消息”或类似的方式显示。例如,用于过滤'>'字符的正则表达式类似于 @"^[ \f\t\v>]*"