如何自动删除重复的邮件

缘起 Gmail

因为依赖Gmail的邮件搜索功能,所以我一直使用Gmail管理我的邮件:在Gmail中,使用pop协议收取其他邮箱的信件,并在Gmail中调用smtp协议去回复邮件。

是的,你收到的、看起来是我QQ邮箱、126邮箱、办公邮箱等各种邮箱发过去的邮件,实际上都是我在Gmail上发送过去的。

重复导入的邮件

有一段时间,我曾经将我的域名 zhoucaiqi.com 托管到Google的企业邮局并给自己开设了邮箱 email@zhoucaiqi.com,并将我积累了多年的 zhoucaiqi@gmail.com 的邮件导入到email@zhoucaiqi.com。但是,Google企业邮局有各种各样的问题,导致我被迫回归 zhoucaiqi@gmail.com 。因为网络问题、服务器限制问题、担心导入不全的问题,我多导入了一两次,导来导去之后,就出现了很多重复的邮件。

需求与困难

我购买的200G空间,已经快被Gmail用满,所以需要删除重复的邮件了。

因为重复的邮件有数千或数万封,靠人工去筛选、删除,是不现实的。而Gmail官方又没有提供自动筛选、删除的功能。因此,只能自己想办法。

思路与方案

imap是邮件同步协议,能让本地客户端的邮件内容与邮件服务器端的内容同步。因此,可以考虑使用imap协议将邮件下载到本地,然后在本地进行重复邮件的筛查、过滤、删除。

说干就干。

先在Gmail的设置中启用imap协议,然后安装邮件客户端thunderbird,然后把Gmail账号信息设置到thunderbirdthunderbird默认就采用imap协议。thunderbird默认只同步邮件头信息,但即使如此,我十几万封的邮件,依然同步了一个晚上,可能是受限于Gmail。

接着,给thunderbird安装Remove Duplicates扩展(Link),这扩展是一款自动筛查重复邮件的插件,可通过很多参数去判断两封邮件是否属于重复邮件,例如 message IDdate in secondssubjectfrom等。在邮件的文件夹中,鼠标右键可以选择通过哪些参数判断邮件是否属于重复的邮件。

我觉得默认的参数就OK了。

我先在某个子文件夹做了测试,这子文件夹有5万封邮件,在文件夹鼠标右键选择Remove Duplicate Messages之后,两三分钟就筛选完了,筛选出来5千封重复的邮件。看筛选结果,是正确的。

结果

我的Gmail总共有14.1万封邮件,我根文件夹选择Remove Duplicate Messages之后,大概十分钟后,过滤出7万封重复的邮件:

过滤结果

重复的邮件中,其中一封邮件标记为Keep,其他邮件标记为Del。点击右下角的Delete Selected就可以删除重复的邮件了。

imap的同步特性,会把这个删除操作同步到服务器端。

done。