我正在写一个Outlook加载项,用于保存电子邮件以供历史使用。不幸的是,即使压缩,Outlook的MSG格式也过于冗长。这将导致已保存的MSG文件的大小是其等效文本的大小的许多倍。但是,将所有邮件另存为文本会明显导致缺少附件,图像和任何相关格式的陷阱。

对于大多数电子邮件来说,这不是问题,但是具有一定程度复杂格式,图片,附件等的电子邮件应以MSG格式保存。

大多数用户的电子邮件都是以HTML格式发送的,这使得我的算法大致如下:

1. If email has attachment(s), save as MSG and be done
2. If email is stored as text, save as text and be done
3. If email is not stored as HTML store as MSG and be done
4. Decide if the HTML should be converted to text and
     store it as text if so
     store it as MSG if not


这很简单,除了步骤4:如何确定保存时应将HTML格式的电子邮件转换为哪种格式?

最佳答案

一个想法:计算消息中HTML标签的加权密度。根据现有数据选择阈值。 HTML密度高于阈值的消息将存储为MSG;密度低于阈值的邮件将存储为纯文本。

您如何计算加权密度?使用HTML解析库。让它解析文档并计算文档中每种HTML标记的数量。这就是您从库中所需要的。将每个标记计数乘以其权重,然后将它们相加。然后尝试将邮件转换为纯文本并计算邮件中的字符数。将加权标签计数总和除以该数字即可得到密度。

密度应按什么加权?通过表,您可以创建每种类型的HTML标签的重要性。我猜想失去粗体和斜体还不错。丢失有序和无序列表的情况会更糟,除非将邮件转换为纯文本时保留项目符号和数字。表格应具有较高的权重,因为它们对格式很重要。也为无法识别的标签选择权重。

您应该如何选择门槛?在电子邮件样本上运行密度计算功能。还可以手动检查这些电子邮件,以查看它们是否更适合作为味精或纯文本格式,并为每封电子邮件写下该选择。对数据使用某种算法来找到边界值。我认为该算法可能是Naive Bayes classification,但在这种情况下可能会有一个更简单的算法。否则,由人类计算出的猜测可能就足够了。我认为在查看人为选择的格式与加权HTML标签密度的散点图,并仔细观察将两种格式决策大致分开的密度值后,您可以做出猜测。

09-10 15:56
查看更多