>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Python

本地 Gmail 清理工具:无需将邮件发送至第三方服务器

某一天,我们打开邮箱,看到数万封未读邮件。五年前购物的商店折扣、服务摘要、任务追踪通知。手动在 Gmail 自己的界面中清理简直是一场噩梦,因为 Google 的网页客户端对超过 50-100 条消息的选择处理得非常勉强。

大多数商业邮件清理工具采用订阅模式运营。它们请求完全账户访问权限,并将你的邮件发送到自己的服务器进行分析。gmail-cleaner 项目的作者采取了不同的方式:编写了一个轻量级的本地工具,带有 Web 界面,通过官方 Gmail API 仅在你的机器上运行。

Gmail Cleaner Demo

为什么要在本地运行清理

该项目的主要理念是完全隐私。无第三方后端、无外部数据库、无付费计划。整个技术栈在本地运行,你的任何数据都不会外传。

该应用解决了四个常见问题:

  • 查找新闻通讯并帮助一键取消订阅。
  • 按发件人分组邮件,显示谁最让你的收件箱杂乱。
  • 批量删除或归档来自选定收件人的邮件线程。
  • 在几秒钟内将数千封邮件标记为已读。

所有已删除的邮件都会进入 Gmail 标准垃圾箱。如果你不小心删除了需要的内容,可以通过 Google 标准网页界面在 30 天内恢复数据。

为了加快速度,该工具使用 Gmail API 批量请求,每次调用最多打包 100 个操作。这就是为什么清理数千封邮件只需很短的时间。

内部结构和工作原理

底层使用 Python 3.9+ 和一个 Web 服务器,以 Gmail 本身的风格提供简洁的界面。

从安全角度来看,你在 Google Cloud Console 中创建自己的应用。这意味着 OAuth 令牌只属于你自己,权限请求仅限最小必要范围:读取和修改移动邮件到垃圾箱以及更改已读状态的权限。

文件 credentials.jsontoken.json 存储在本地。在 Docker 构建中为此提供了单独的卷 ./data,因此重启容器后无需重新授权。

如何部署项目

运行项目最简单的方式是通过 Docker。对于喜欢虚拟环境的人,也可以使用 uv 包管理器。

首先,你需要进入 Google Cloud Console,创建一个项目,启用 Gmail API,并生成 OAuth 客户端 ID(Docker 使用 Web 应用类型,直接运行 Python 则使用桌面应用类型)。确保在 OAuth 同意屏幕上将你的邮箱添加到测试用户列表中。

将下载的文件保存为项目根目录下的 credentials.json

通过 Docker 运行

克隆仓库:

git clone https://github.com/Gururagavendra/gmail-cleaner.git
cd gmail-cleaner

credentials.json 文件放在旁边并启动容器:

docker compose pull && docker compose up

然后在浏览器中打开 http://localhost:8766,点击登录按钮,从容器日志中获取 Google 授权链接,并确认访问权限。

通过 Python 和 uv 运行

如果你不想设置 Docker,可以通过 uv 直接运行脚本:

uv sync
uv run python main.py

界面将在同一地址 http://localhost:8766 可用。

过滤器和数据导出

除了简单的清理,项目还包括高级过滤器。你可以通过附件大小、日期范围或标准 Gmail 类别(推广、社交、动态、论坛、主要)来排序邮件。

如果你需要在删除旧工作邮件之前保留有关发件人和日期的信息,界面可以将元数据导出为 CSV。

谁会发现这很有用

该项目非常适合收件箱已超过 50,000 条消息并接近 Google Drive 免费存储空间限制的任何人。

是的,初始设置需要 5-10 分钟在 Google Cloud Console 中操作并创建 OAuth 密钥。但作为回报,你获得了一个不在第三方服务器上读取你的邮件、对于基本清理功能也不需要每月订阅的工具。

相关项目