自动删除 Gmail 旧邮件,恢复快速同步
一个使用多年的 Gmail 账户很容易积累超过 50 万封邮件。正是这个数量让 Thunderbird、Outlook 或手机客户端变得极其缓慢:每个客户端都要为整个邮箱建立索引并同步,消耗大量带宽、内存和电量。每天手动删除邮件既费时又容易出错。
为什么庞大的邮箱会拖慢邮件客户端
桌面和移动客户端都会保留邮箱的本地副本。会话数量越多,首次同步耗时越长,本地数据库越大,连接中断也越频繁。Gmail 本身依然流畅,但 IMAP 客户端并非如此。实用的做法是只保留近期邮件,例如最近 90 天,把更早的全部删除。
在 Google Apps Script 中编写分批清理脚本
Google Apps Script 可以免费替你完成清理。打开 script.google.com,新建项目并粘贴下面的代码。修改 domains 数组,加入你自己的地址或域名,因为脚本只会处理这些发件人的邮件。脚本会搜索超过 90 天的会话,以小批次移入垃圾箱,并在达到 6 分钟执行上限前停止。每个会话在垃圾箱中保留 30 天,随时可以恢复。
JS
function deleteNewsletters3MonthsPermanent() {
var domains = [
"site1.com", "user@site2.com",
];
var batchSize = 25;
var totalDeleted = 0;
var startTime = new Date().getTime();
var maxExecutionTimeMs = 5 * 60 * 1000; // 5 minutes safety threshold
for (var b = 0; b < domains.length; b += batchSize) {
if (new Date().getTime() - startTime > maxExecutionTimeMs) {
Logger.log("Execution limit approaching. Stopped safely. Permanently deleted so far: " + totalDeleted);
return;
}
var chunk = domains.slice(b, b + batchSize);
var fromFilters = chunk.map(function(d) {
return d.indexOf('@') > -1 ? 'from:' + d : 'from:*@' + d;
}).join(' OR ');
var searchQuery = '(' + fromFilters + ') older_than:90d';
var pageToken = null;
do {
if (new Date().getTime() - startTime > maxExecutionTimeMs) {
Logger.log("Execution limit approaching inside pagination. Permanently deleted so far: " + totalDeleted);
return;
}
// Max results allowed per list request by the API is 500
var response = Gmail.Users.Messages.list('me', {
q: searchQuery,
maxResults: 500,
pageToken: pageToken
});
if (response.messages && response.messages.length > 0) {
var messageIds = response.messages.map(function(m) { return m.id; });
// Permanent bulk delete: 50 quota units for up to 1,000 IDs
Gmail.Users.Messages.batchDelete({ ids: messageIds }, 'me');
totalDeleted += messageIds.length;
// Small delay to keep rate pacing clean
Utilities.sleep(600);
}
pageToken = response.nextPageToken;
} while (pageToken);
}
Logger.log("Finished. Total messages permanently deleted: " + totalDeleted);
}额外技巧与安全备份
在执行任何操作之前,先用 Google Takeout 导出邮箱,保留一份本地副本。先用范围很窄的查询测试脚本,确认无误后再扩大范围。在 Thunderbird 中取消订阅「所有邮件」文件夹,并把 IMAP 同步限制为仅同步邮件头或最近几天,这两项调整都能立即减轻卡顿。
