环境:Windows 11 Pro 64 下的 MS Office LTSC Pro Plus 2021。
这是我对堆栈溢出:在 MS Outlook VBA 中,如何在 MailItem 中查找隐藏数据。
我一直在研究我的 Outlook 文件的内容pst
。它包含自 2004 年以来(19 年)发送和接收的电子邮件。
我使用 Outlook 只是为了收发电子邮件。我不使用它的日历或其他功能,尽管有时当有人要求开会而我回应时,它会将事件存储在日历中。我认为 pst 文件中与其中包含的电子邮件没有直接关系的内容可以忽略不计。
6 月 1 日,我将 pst 文件的电子邮件文件夹中所有项目的属性输出到 MS Access。共有 300,723 个项目。MailItem.Size
所有项目的属性总和为 9.5 * 10^9。不幸的是,我当时没有保存 pst 文件的副本,但 5 月 27 日的备份文件大小为 15.7 * 10^9,而 6 月 9 日观察到的文件大小为 15.8 * 10^9。因此,我估计 6 月 1 日 pst 文件的大小为 15.7 * 10^9。这意味着文件的大小比MailItem.Size
所有项目的总和大 6.2 * 10^9 或 65%。
在里面堆栈溢出上面链接的问题,在部分中隐藏数据,我注意到三个奇怪的现象。第一个是 Outlook 似乎保存了我删除的电子邮件附件的隐藏副本。第三个是 Outlook 似乎保存了我永久删除的电子邮件的隐藏副本(即,不仅仅是移动到“已删除邮件”文件夹)。
新的观察结果是 pst 文件的大小比MailItem.Size
其文件夹中所有电子邮件的总大小大 65%,这似乎与之前的观察结果一致,即已删除的附件和已删除的电子邮件似乎隐藏在文件中的某个地方。但在假设这是正确的之前,我需要知道 Outlook 中电子邮件的存储开销是多少。换句话说:
MailItem.Size
如果pst 文件中存储的所有电子邮件总数为X,其中未删除任何附件,也未从“已删除邮件”文件夹中删除任何电子邮件,文件大小为是,该比率的预期大小是多少y/x?
假设该问题的答案远小于 1.65,那么剩下的就是堆栈溢出问题:如何找到文件数据结构中已删除的附件和电子邮件的隐藏位置,以及如何将它们从文件中删除?
答案1
PST 文件有自己的存储系统,与 FAT32 或 NTFS 并无太大区别。删除邮件或附件时,可能会出现空扇区 - 如果您删除 10kB 的电子邮件,Outlook 不会重写多 GB 的 PST 文件。数据不会立即返回到主机操作系统 (Windows) - 已删除电子邮件使用的扇区将被标记为空,稍后将重新使用。预计存储会变得碎片化。
如果您想回收存储空间,可以压缩 PST - 右键单击顶部 PST 文件夹,选择“数据文件属性”、“高级”、“立即压缩”。