feat: 分组代理支持 & API优先级回退 & 详细错误弹框

- 分组管理新增 proxy_url 字段,支持 HTTP/SOCKS5 代理
- Graph API 请求(获取邮件/详情/刷新Token/删除)均支持走分组代理
- 获取邮件/删除邮件按 Graph API → IMAP(新) → IMAP(旧) 优先级自动回退
- ProxyError 时跳过 IMAP 回退,避免无意义重试
- 所有方式失败时弹框逐一展示每种 API 的中文失败原因
- 更新 README 文档说明 API 优先级、代理支持、IMAP 删除限制
This commit is contained in:
assast committed 2026-02-18 21:39:47 +08:00
1 parent 11092a9e29
commit 3d8f2157b9
4 files changed
+303 -43

No files matched your search

+54 -1
View File
@@ -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. 系统设置
点击导航栏的「⚙️ 设置」按钮,可以修改以下配置: