处理重复的 Outlook Express 邮件

处理重复的 Outlook Express 邮件

有谁知道一种便宜(免费?)、简单且有效的方法来处理 Outlook Express 中的重复消息?

我见过几种声称可以做到这一点的商业产品,我也尝试了几种,但它们都有其局限性和缺点,使得它们的价格不值得。

它是插件还是独立应用程序并不重要,只要它提供足够的控制以便在扫描期间检测重复项并在之后处理它们即可。

(如果有其他方法可以做到这一点,我也会接受,只要它的影响最小;例如,我考虑将所有——哎呀!——消息转储到 EML 文件中,然后运行标准的重复文件查找器,然后重新导入,但这会剥夺它们的标志、帐户等。将它们导入另一个电子邮件客户端并返回也是如此。

作为最后的手段,我甚至愿意——像往常一样——编写我自己的应用程序,但需要一个像样的 OE 库和示例程序。)

答案1

我尝试了几个(约八个);不幸的是,大多数(全部?)都是商业付费应用程序。

我尝试过的方法中,OE 重复删除器AJ Systems 的是最好的产品之一,MAPILab 的从 Outlook Express 中删除重复项。同样不幸的是,试用版功能太有限,如果您有多个重复项,则无法真正使用。此外,MAPILab 的“可配置性”也太有限了(但即便如此,它也比大多数其他应用程序更具可配置性)。

如果你有足够的理由购买一款应用,我推荐 AJ System 的工具。它是一款独立工具(不是插件),可以扫描你所有的邮件,并允许你选择要删除的内容。


最后,我放弃了手动清除应用程序。是的,我有近 10,000 条重复消息(别问),需要确认为重复消息并从其他 24,000 条消息中清除,是的,并非所有消息都是重复的,因此手动控制就显得更加重要。但是,我发现“查找”对话框是完成这项工作最有用的工具。

具体来说,我打开了“查找”对话框并让它搜索全部将其设置为搜索 OE 最早可能日期 1753 年 9 月之后的任何消息(我发现搜索所有文件日期较高,比如 9999 年 12 月,没有找到没有日期的消息。然后我按发送日期(不是接收日期!)对它们进行排序,并查看它们。

我发现这更容易,因为我已将目标文件夹中所有可能重复的消息标记为忽略/标记,因此它们在“查找”对话框中更加突出。

这出乎意料的简单,因为重复的消息具有与好消息相同的主题和发送日期,所以我能够轻松地看到它们(特别是在调整列之后)。

然后我仔细检查它们并在找到它们后就将其删除(我发现如果我确保从搜索中排除“已删除邮件”文件夹,则执行此操作会更容易,因为这样它们就会从“查找”对话框中消失,从而减少混乱并使事情变得更容易)。

最后,我检查了剩下的内容并进行了搜索,看是否存在类似的消息(我发现有几条消息不存在,于是将它们移动到了相应的文件夹中)。

我承认手动完成这项任务相当艰巨;在大约 30,000 条消息中处理大约 9,000 条消息!但一旦我掌握了要做什么并找到了节奏,我就可以在大约 4 小时内完成所有任务(其中包括大约一个小时的晚餐、休息等时间)。另外,因为我是在看电视的时候完成的,所以任务感觉更容易,时间也更快。

注意::我应该指出,我事先备份了我的整个消息存储,以防万一(事实上,在测试这些应用程序并尝试找到有效的手动方法时,我不得不多次恢复它)。另外,确保禁用自动检查(甚至阻止 OE 连接到互联网),否则您将丢失自备份以来下载的所有消息。

答案2

我为这个 v3.3.8.1 编写了一个 Autoit 脚本。并将其与 MapiLab 2.3.0.0 试用版一起使用。VirtualBOX Windows XP SP3。

因为每次扫描只会获取 5 个重复项,所以脚本会在取消扫描之前逐渐增加超时时间以加快该过程。

  1. 将脚本快捷方式拖到开始栏(您需要经常按它)
  2. 右击并编辑。保持打开状态。您也需要编辑它
  3. 打开 rdoe.exe 并选择一个文件夹
  4. 运行脚本。如果失败,请记下消息中的超时时间并手动输入。
  5. 当你知道重复项的数量时,将 $x 更改为其数量除以 5

如果一个文件夹中有超过 10,000 条消息,请将其拆分为更小的文件夹。

$timeout = 1
For $x = 1 to 50
Press("Remove Duplicates from Outlook Express", "", "Button5")
WinWaitActive("Removing duplicates - stage 1 of 3 : collecting messages")
If Not WinWaitNotActive("Removing duplicates - stage 1 of 3 : collecting messages", "", $timeout) Then
    Press("Removing duplicates - stage 1 of 3 : collecting messages", "", "Button1")
    Press("Remove Duplicates from Outlook Express", "", "Button1")
    WinWaitNotActive("Remove Duplicates from Outlook Express")
    WinWaitNotActive("Removing duplicates - stage 2 of 3 : analyzing messages")
    WinWaitNotActive("Removing duplicates - finish")
EndIf
WinWaitNotActive("Removing duplicates - stage 2 of 3 : analyzing messages")
If WinActive("Remove Duplicates from Outlook Express",  "All done, selected folders processed.") <> 0 Then
    Send("{SPACE}")
    WinWaitActive("Removing duplicates - finish", "", 1)
    If WinActive("",  "0") <> 0 Then
        $timeout = $timeout + 1
    EndIf
    Press("Removing duplicates - finish", "", "Button1")
ElseIf WinActive("Trial Limitations") <> 0 Then
    Press("Trial Limitations", "", "Button2")
    Press("Remove Duplicates from Outlook Express", "", "Button1")
    Press("Removing duplicates - finish", "", "Button1")
    If WinActive("[ACTIVE]") = "Remove Duplicates from Outlook Express" Then
        Press("Remove Duplicates from Outlook Express", "", "Button1")
        Press("Removing duplicates - finish", "", "Button1")
        Send("{DOWN}")
    EndIf
Else
    $x = 99999
    msgbox(0,"",$timeout)
EndIf
Next

Func Press($title,$text,$button)
    WinActivate($title, $text)
    WinWaitActive($title,$text)
    controlclick($title,$text,$button)
    WinWaitNotActive($title)
EndFunc

如果您的 Windows 以虚拟机形式运行,则您可以在主机操作系统中使用其他程序。在机器内部,焦点的改变将终止脚本并显示超时消息。

相关内容