diff --git a/README.md b/README.md index 7adc686..598b824 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,8 @@ #### 核心功能 - 🔐 **登录验证** - 密码保护的 Web 界面,支持在线修改密码 -- 📁 **分组管理** - 支持创建、编辑、删除邮箱分组,自定义分组颜色 +- 📁 **分组管理** - 支持创建、编辑、删除邮箱分组,自定义分组颜色,支持分组级别代理设置(⭐ 2026-02-18 新增) +- 🌐 **分组代理** - 每个分组可配置 HTTP/SOCKS5 代理,分组下所有邮箱的 Graph API 请求走该代理(⭐ 2026-02-18 新增) - 📧 **多邮箱管理** - 批量导入和管理多个 Outlook 邮箱账号 - 📬 **邮件查看** - 查看收件箱、垃圾邮件和已删除邮件 - 🔍 **全屏查看** - 支持全屏模式查看邮件,完整展示长邮件内容(⭐ 2026-01-23 新增) @@ -32,6 +33,8 @@ - 🏷️ **标签管理** - 支持给邮箱账号打标签,支持批量打标签/去标签,支持按标签筛选(⭐ 2026-01-31 新增) - 📦 **批量移动分组** - 支持批量选择复个邮箱账号并移动到指定分组(⭐ 2026-02-08 新增) - 🗑️ **邮件删除** - 支持单封/批量永久删除邮件,二次确认防误删(⭐ 2026-01-31 新增),注意:买的号大概率是没有开删除的api权限的 所以删除大概率会失败,自己授权的删除应该无问题 +- 🔄 **API 优先级回退** - 获取邮件/刷新Token/删除邮件均按 Graph API → IMAP(新) → IMAP(旧) 优先级自动回退(⭐ 2026-02-18 新增) +- ❌ **详细错误弹框** - 所有 API 方式均失败时,弹框逐一展示每种方式的中文失败原因(⭐ 2026-02-18 新增) #### Token 刷新管理 - 🔁 **全量刷新** - 一键刷新所有账号 Token,实时进度展示,防止 90 天过期(⭐ 2026-01-23 新增) @@ -510,6 +513,56 @@ user@outlook.com----password123----24d9a0ed-8787-4584-883c-2fd79308940a----0.AXE > [!CAUTION] > **永久删除**:删除操作不可恢复!邮件将被直接永久删除,不会移动到"已删除"文件夹。 +### 📡 API 调用优先级与代理说明(⭐ 2026-02-18 新增) + +#### API 调用优先级 + +本工具在获取邮件、刷新 Token、删除邮件时,会按以下优先级自动尝试并回退: + +| 优先级 | 方式 | 说明 | +|--------|------|------| +| 1️⃣ | **Graph API** | 推荐方式,功能最完整 | +| 2️⃣ | **IMAP(新服务器)** | `outlook.live.com`,Graph 失败后回退 | +| 3️⃣ | **IMAP(旧服务器)** | `outlook.office365.com`,最后尝试 | + +> [!NOTE] +> 如果 Graph API 失败原因是**代理连接错误**(ProxyError),则不会继续回退 IMAP,因为代理问题与 API 方式无关。 + +#### 如何判断当前使用的是 Graph API + +- 获取邮件后,邮件列表上方会显示方法标签:`Graph API`、`IMAP (New)` 或 `IMAP (Old)` +- **通过本项目 OAuth2 助手授权的账号,都是使用 Graph API** +- 从第三方购买的账号,取决于其提供的 client_id 和 refresh_token 的权限配置 + +#### 分组代理支持 + +每个分组可配置 HTTP 或 SOCKS5 代理,分组下所有邮箱在以下操作时会走该代理: + +- ✅ 获取邮件(Graph API) +- ✅ 查看邮件详情(Graph API) +- ✅ 刷新 Token(包括手动刷新、全量刷新、定时刷新) +- ✅ 删除邮件(Graph API) + +**代理格式示例:** +``` +http://127.0.0.1:7890 +socks5://127.0.0.1:7891 +socks5://user:pass@proxy.example.com:1080 +``` + +> [!IMPORTANT] +> **仅 Graph API 请求支持走代理**,IMAP 连接目前不支持代理。如果你的账号需要通过代理访问,请确保该账号使用的是 Graph API 方式(通过本项目授权的账号默认使用 Graph API)。 + +> [!WARNING] +> 使用 SOCKS5 代理需要安装 `pysocks` 依赖(`pip install pysocks` 或 `pip install requests[socks]`),Docker 镜像已内置。 + +#### IMAP 删除邮件的限制 + +> [!CAUTION] +> **通过 IMAP 方式获取的邮件目前不支持删除操作。** 这是因为 Graph API 返回的邮件 ID 与 IMAP 的 UID 格式不兼容,无法互相通用。如果删除操作报错,请确认: +> 1. 你的账号是否通过本项目 OAuth2 助手授权(授权的账号使用 Graph API,支持删除) +> 2. 你的 client_id 是否拥有 `Mail.ReadWrite` 权限(购买的号大概率没有此权限) + ### 9. 系统设置 点击导航栏的「⚙️ 设置」按钮,可以修改以下配置: diff --git a/requirements.txt b/requirements.txt index 0f1685b..164d20a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ flask>=3.0.0 flask-wtf>=1.2.0 werkzeug>=3.0.0 -requests>=2.25.0 +requests[socks]>=2.25.0 APScheduler>=3.10.0 croniter>=1.3.0 bcrypt>=4.0.0 diff --git a/templates/index.html b/templates/index.html index 2c2617c..448bfe5 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1524,6 +1524,12 @@ maxlength="7" onchange="selectCustomColorHex(this.value)"> +
+ + +
可选,设置后该分组下所有邮箱获取邮件时走此代理(支持 HTTP/SOCKS5)
+
+ + +