免费清除重复邮件的方法。






1.64/5 (7投票s)
想清除MS Outlook中的重复邮件吗? 已经尝试过限制试用版的插件了吗? 这是一个基本的免费解决方案。
引言
此代码将帮助您清除MS Outlook客户端中存在的重复邮件。
背景
我将我的 Gmail 邮件导入到我的 MS Outlook 客户端。 但由于连接不好,我最终多次下载了相同的邮件。 所以最后我下载了 6000 封邮件。 我估计其中至少有 1000 封是重复的。 我非常需要一个软件来帮助我清除所有这些重复邮件。 我在网上搜索,只找到了一些试用版软件,这些软件只能找到少量邮件,然后要求您注册才能清理您的 Outlook 文件夹。 所以我决定自己编写一些 VB 宏代码来完成这项任务。 实际上我是一名 Java 程序员,但我相信我的朋友 Hadi 曾经告诉我的“一旦成为程序员,就永远是程序员”。 抱着这种信念,我在短短 4 小时内编写了这个小型的实用程序代码。 但无论如何,我实现了我的目标。算法
从当前选定的文件夹中获取所有邮件到 EmailList根据 ReceivedDate 对 EmailList 进行排序,并存储到 SortedEmailList
排序后的邮件列表 - SortedEmailList
一个空的整数数组 MailsToBeDeletedArray,长度 - 1000(整数数组的长度定义了在我的执行中将删除多少个重复项)。
整数 NoOfEmailsToBeDeleted = 0
开始循环 SortedEmailList,使用计数器 X结束循环
从排序后的邮件列表中获取邮件项 X
为项目 X 生成邮件签名(签名是一个字符串,包含邮件的主题、接收日期、发送日期和发件人邮箱的连接)
从排序后的邮件列表中获取邮件项 X+1
生成邮件项 X+1 的邮件签名
如果 X 邮件项的签名与 X+1 邮件项的签名相同
设置 MailsToBeDeletedArray[NoOfEmailsToBeDeleted] = X+1
开始循环 MailsToBeDeletedArray,使用计数器 X
获取 MailsToBeDeletedArray 中 X 处的整数 mailIndex结束循环
如果 mailIndex = 0结束循环从当前选定的文件夹中获取所有邮件到 EmailList ' 这一行是因为一个我无法解决的 bug#1
根据 ReceivedDate 对 EmailList 进行排序,并存储到 SortedEmailList ' 这一行是因为一个我无法解决的 bug#1
获取 SortedEmailList 中 (mailIndex-X) 处的邮件
Email.Delete
问题
关于这个 bug 的任何帮助/想法都将有所帮助。
Bug#1 -
我收到错误 Run-time error '-2147221233,对象 'MailItem' 的方法 'delete' 失败
我能够分析到在调用 delete 方法后,邮件没有被删除,而是被标记为已删除。
所以下次当您尝试删除同一索引处的邮件时,它会抛出此错误。
所以我通过重新获取文件夹中的邮件并再次对它们进行排序来解决这个问题。
我知道这会带来性能开销,但我解决这个 bug 的所有尝试都失败了。
使用代码
要使用此代码,
打开您的 MS Outlook 客户端。
按 Alt + F11,这将打开 Microsoft Visual Basic 编辑器。
单击 插入 > 模块(默认名称应该没问题)
在编辑器中打开新创建的模块。
将代码从附加的 zip 文件粘贴到那里。
选择您要删除重复邮件的文件夹后,返回到 VB 编辑器并按 F5。
关注点
由于我在 VB 方面没有太多经验,欢迎提出任何建议/修改/改进。
历史
目前没有历史记录。