有没有人对如何清理收到的电子邮件有任何建议?我想删除免责声明,图像以及可能也存在的任何以前的电子邮件文本,以便我只留下正文文本内容。我的猜测是不可能以任何可靠的方式,但有人试过吗?有没有适合这类事情的图书馆?
答案 0 :(得分:4)
在电子邮件中,有几个商定的标记意味着你想剥离的东西。您可以使用regular expressions查找这些行。我怀疑你不能很好地“消毒”你的电子邮件,但有些你可以寻找的东西:
对于实际的C#实现,我将其留给您或其他SO。
答案 1 :(得分:3)
要看一些明显的事情:
答案 2 :(得分:2)
OSBF-Lua的第3版有一个邮件解析库,它将处理MIME并将邮件拆分为其MIME部分,依此类推。我目前有一堆乱七八糟的Lua脚本 像忽略大多数非文本附件的东西,更喜欢纯文本到HTML,等等。 (我还试图保留引用时将长行换行为80个字符。)
至于删除以前引用的邮件,上面的建议都很好(你必须订阅一些不礼貌的邮件列表)。
可靠地删除免责声明可能会很困难。我的第一个裁剪就是维护一个免责声明库,这些免责声明将在每封邮件的末尾被删除;我会编写一个脚本,以便我轻松添加到库中。对于更复杂的东西,我会尝试某种机器学习。
自2007年2月以来,我一直致力于垃圾邮件过滤,并且我已经了解到与电子邮件有关的任何事情都是一团糟。一个好的经验法则是,无论你想做什么都比你想象的要困难得多: - (
答案 3 :(得分:1)
鉴于您的问题“是否有可能以编程方式'清理'电子邮件?”,我会回答“不,不可靠”。
你面临的危险并不是技术性的,而是社会性的。
很容易发现并过滤掉消息的某些方面 - 比如图像。同样,过滤签名和免责声明也是可能的(虽然更多是挑战)。
真正的问题是错误的成本。
如果您的过滤器恰好删除了邮件的关键部分,会发生什么?你可以追溯它找到丢失的部分,或者你的过滤是否具有破坏性?更糟糕的是,你会注意到这件作品丢失了吗?
我多年前看过一部经典的喜剧小品,说明了这一点。一起工作在汽车的两个人。一个是在工作之下,另一个坐在附近阅读服务手册的说明 - 很明显,没有人知道他在做什么,但他们正在尽力而为。
手动的家伙,大声朗读:“撤消油底壳中心的粗体......”[翻页]
工具人:“好的,它出来了。”
手动人:“......在任何情况下都没有。”
答案 4 :(得分:0)
如果您创建自己的应用程序,我会查看Regex,查找文本并替换它。为了使应用程序有点好,我创建了一个叫Called的类,在那个类中我有一个名为RAW的属性和一个名为Stripped的属性。
只是一些提示,当你看到正则表达式时,你会收集其余的东西!
答案 5 :(得分:0)
SigParser具有一个可在.NET中使用的程序集。它为您提供HTML和文本形式的正文,其余内容均已删除。如果您给它发送HTML电子邮件,则在需要时会将电子邮件转换为文本。
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);