代码之家  ›  专栏  ›  技术社区  ›  flesh

是否可以通过编程方式“清理”电子邮件?

  •  4
  • flesh  · 技术社区  · 17 年前

    5 回复  |  直到 17 年前
        1
  •  5
  •   Community Mohan Dere    6 年前

    在电子邮件中,有两个约定的标记,表示您希望去除的内容。您可以使用 regular expressions . 我怀疑你不能很好地“净化”你的电子邮件,但你可以寻找一些东西:

    1. 以“>”(大于空白)开头的行标记引号
    2. 带“-”(两个连字符,然后是空格,然后是换行符)的行标记签名的开头,请参见 Signature block on Wikipedia
    3. 多部分消息,边界以 --

    至于实际的C#实现,我留给您或其他SOER。

        2
  •  3
  •   Simon Callan    17 年前

    有几件显而易见的事情需要注意:

    1. 如果邮件不是纯纯文本,则消息将是多部分mime。任何类型为“image/*”(image/jpeg等)的部件都可能会被删除。很可能,任何类型不是“text/*”的零件都可以使用。
    2. 引用文本的通常格式是在文本前面加一个“>”字符。您应该能够删除这些行,除非该行以“>From”开头,在这种情况下,插入“>”是为了防止邮件阅读器认为“From”是新邮件的开头。
        3
  •  2
  •   Norman Ramsey    17 年前

    OSBF Lua的第3版有一个邮件解析库,它将处理MIME并将消息拆分为MIME部分,等等。我现在有一堆Lua脚本,它们可以

    可靠地删除免责声明可能会很困难。我的第一个切入点是简单地维护一个免责声明库,该库将从每条邮件的末尾剥离;我会写一个脚本,使我能够轻松地添加到库中。对于更复杂的东西,我会尝试某种机器学习。

        4
  •  1
  •   Bevan    17 年前

    考虑到你的问题“是否可以通过编程清理电子邮件?”,我会回答“不,不可靠”。

    你面临的危险实际上不是技术上的,而是社会学上的。

    它很容易发现并过滤掉消息的某些方面,比如图像。同样,过滤掉签名和免责声明也是有可能实现的(尽管这是一个更大的挑战)。

    真正的问题是出错的代价。

    如果您的筛选器删除了消息的关键部分,会发生什么情况?你能追踪它找到丢失的片段吗,或者你的过滤是构造性的吗?更糟糕的是,你有没有注意到那件东西不见了?

    几年前我看过一部经典的喜剧小品,它说明了这一点。两个家伙一起在车上工作。一个坐在下面做工作,另一个坐在旁边阅读维修手册中的说明——很明显,两个人都不知道自己在做什么,但他们已经尽力了。

    手动操作人员,大声朗读:“松开油底壳中心的粗体…”[翻页]

    手册男:“……在任何情况下。”

        5
  •  0
  •   Filip Ekberg    17 年前

    如果您创建自己的应用程序,我会查看Regex,查找文本并替换它。为了使应用程序更美观,我创建了一个名为Email的类,在该类中我有一个名为RAW的属性和一个名为Stripped的属性。

        6
  •  0
  •   Paul Mendoza    6 年前

    SigParser

    var parser = new SigParser.EmailParsing.EmailParser();
    var result = await parser.GetCleanedBodyAsync(new SigParser.EmailParsing.Models.CleanedBodyInput {
        FromEmailAddress = "john.smith@example.com",
        FromName = "John Smith",
        TextBody = @"Hi Mark,
    This is my message.
    
    Thanks
    John Smith
    888-333-4434"
                });
    
    // This would print "Hi Mark,\r\nThis is my message."
    Console.WriteLine(result.CleanedBodyPlain);