[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81145":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":11,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":13,"stars30d":14,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":15,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":18,"hasPages":16,"topics":19,"createdAt":9,"pushedAt":9,"updatedAt":20,"readmeContent":21,"aiSummary":22,"trendingCount":13,"starSnapshotCount":13,"syncStatus":23,"lastSyncTime":24,"discoverSource":25},81145,"MicroSoftEmailManage","icutool\u002FMicroSoftEmailManage","icutool","一个基于 FastAPI + SQLite 的 Hotmail \u002F Outlook 邮箱管理后台，适合本地部署和个人或小团队内部使用。",null,"JavaScript",31,5,0,1,2.33,false,"master",true,[],"2026-06-12 02:04:11","# Hotmail Mail Manager\n\n一个基于 `FastAPI + SQLite` 的 Hotmail \u002F Outlook 邮箱管理后台，适合本地部署和个人或小团队内部使用。\n\n它的核心目标不是做一个复杂的邮件系统，而是把多个邮箱账号集中管理起来，支持批量导入、标签整理、备注记录、邮件查看，以及每日自动刷新令牌，降低手工维护成本。\n\n## 项目预览\n\n### 1. 登陆界面\n\u003Cimg src=\".\u002Fimg\u002Flogin.png\" width=\"800\" \u002F>\n\n### 2. 账号管理界面\n\u003Cimg src=\".\u002Fimg\u002Fmanage.png\" width=\"800\" \u002F>\n\n### 3. 邮件查看管理界面\n\u003Cimg src=\".\u002Fimg\u002FmailView.png\" width=\"800\" \u002F>\n\n### 4. 日志界面\n\u003Cimg src=\".\u002Fimg\u002Flog.png\" width=\"800\" \u002F>\n\n## 项目亮点\n\n- 批量导入邮箱账号，支持一键导入大量 Hotmail \u002F Outlook 账号\n- 标签管理，便于按业务用途、状态、来源快速筛选账号\n- 备注管理，可为每个邮箱补充用途说明、异常情况、渠道来源等信息\n- 每日自动刷新令牌，默认每天凌晨 `3:00` 自动执行全量刷新任务\n- 手动触发刷新任务，并记录刷新日志、失败详情和执行耗时\n- Access Token 本地缓存，减少频繁请求微软接口\n- Refresh Token 更新留痕，旧令牌会写入历史表，方便追踪\n- 支持查看 `Inbox(收件箱)` 和 `Junk(垃圾箱)` 邮件\n- 本地单文件数据库，无需 Redis、无需单独数据库服务，部署成本低\n\n## 适用场景\n\n- 管理多组 Hotmail \u002F Outlook 邮箱账号\n- 需要给邮箱做标签分类和业务备注\n- 需要定期维护 OAuth 令牌，减少令牌失效带来的人工处理\n- 需要在一个简单后台里快速查看收件箱和垃圾箱邮件\n\n## 功能概览\n\n### 1. 邮箱批量导入\n\n支持按行粘贴导入，格式如下：\n\n```text\n邮箱----密码----client_id----refresh_token\n```\n\n示例：\n\n```text\nabc@hotmail.com----123456----clientidxxxx----refresh_token_xxx\nabc2@hotmail.com----123456----clientidxxxx----refresh_token_xxx\n```\n\n导入时会自动区分：\n\n- 新账号：插入数据库\n- 已存在账号：更新密码、`client_id`、`refresh_token`\n- 格式不正确的行：自动跳过\n\n### 2. 标签管理\n\n每个邮箱都可以维护多个标签，使用逗号分隔。\n\n适合标记：\n\n- 已使用\n- 未使用\n- 站点A\n- 注册号\n- token_invalid\n\n系统支持：\n\n- 编辑标签\n- 标签去重与格式规范化\n- 按标签筛选邮箱\n- 快速复用历史标签\n\n### 3. 备注管理\n\n每个邮箱都可以添加备注，用于记录更完整的上下文信息，例如：\n\n- 邮箱来源\n- 用途说明\n- 当前状态\n- 异常原因\n- 后续处理记录\n\n相比标签，备注更适合存储多行说明和非结构化信息。\n\n### 4. 邮件查看\n\n支持直接查看邮箱邮件内容：\n\n- 收件箱 `Inbox`\n- 垃圾箱 `Junk`\n\n支持展示：\n\n- 发件人\n- 收件人\n- 主题\n- 时间\n- 邮件正文\n\n在邮件查看页面中，还可以开启自动刷新，便于持续观察目标邮箱的新邮件。\n\n### 5. 每日自动更新令牌\n\n项目内置后台调度器，应用启动后会自动开启。\n\n默认行为：\n\n- 每天凌晨 `3:00` 按服务器本地时间执行一次全量令牌刷新\n- 逐个遍历数据库中的邮箱账号\n- 通过微软 OAuth 接口刷新 `access_token`\n- 若返回新的 `refresh_token`，会自动更新数据库\n- 刷新结果会写入日志表，记录成功数、失败数、失败详情、执行时长\n\n另外，后台页面也支持手动触发一次全量刷新任务，适合临时补刷或排查问题。\n\n## 技术栈\n\n- 后端：`FastAPI`\n- 模板：`Jinja2`\n- 数据库：`SQLite`\n- ORM：`SQLAlchemy`\n- OAuth 请求：`requests`\n- 邮件协议：`IMAP + XOAUTH2`\n- 运行服务：`uvicorn`\n\n## 项目结构\n\n```text\n.\n├─ icutool_mail.py                # FastAPI 入口与接口定义\n├─ oauth_service.py               # OAuth token 刷新逻辑\n├─ mail_service.py                # 邮件读取与 IMAP 交互\n├─ token_refresh_service.py       # 每日自动刷新任务与日志\n├─ models.py                      # 数据模型\n├─ database.py                    # 数据库初始化\n├─ templates\u002F\n│  ├─ login.html                  # 登录页\n│  └─ index.html                  # 后台首页\n├─ static\u002F\n│  ├─ app.js                      # 前端交互逻辑\n│  └─ app.css                     # 页面样式\n└─ requirements.txt               # 依赖列表\n```\n\n## 快速开始\n\n### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. 设置后台密码\n\n项目通过环境变量 `ADMIN_PASSWORD` 控制后台登录密码。\n\nWindows PowerShell：\n\n```powershell\n$env:ADMIN_PASSWORD=\"your_password\"\n```\n\nLinux Shell：\n\n```shell\nexport ADMIN_PASSWORD=\"your_password\"\n```\n\n如果未设置，默认密码为：\n\n```text\nadmin123\n```\n\n### 3. 启动项目\n\n```bash\npython icutool_mail.py\n```\n\n启动后访问：\n\n```text\nhttp:\u002F\u002FIP:10019\n```\n\n## 数据存储说明\n\n- 默认使用本地 `SQLite` 数据库文件 `mail.db`\n- `mail.db` 已在 `.gitignore` 中忽略，不会默认提交到 GitHub\n- 项目会自动建表\n- 若旧数据库缺少 `remark` 字段，启动时会自动补齐\n\n## 令牌机制说明\n\n项目对令牌做了两层处理：\n\n### 1. Access Token 缓存\n\n- 获取到的 `access_token` 会缓存在数据库中\n- 默认缓存 `30 分钟`\n- 未过期时优先使用缓存，减少重复请求微软接口\n\n### 2. Refresh Token 自动更新\n\n- 当微软返回新的 `refresh_token` 时，系统会自动写回当前账号\n- 旧的 `refresh_token` 会记录到 `mail_refresh_token_history` 表\n- 便于后续排查令牌变化和异常问题\n\n## 刷新日志\n\n系统会记录每次全量刷新任务的结果，包括：\n\n- 触发方式：手动 \u002F 定时\n- 总账号数\n- 成功数\n- 失败数\n- 失败账号与错误原因\n- 开始时间 \u002F 完成时间\n- 执行耗时\n\n这部分对排查令牌失效、IMAP 登录失败、接口异常很有帮助。\n\n## 安全说明\n\n当前项目定位为本地管理工具或受信任环境下的内部工具，登录机制较轻量：\n\n- 使用单一后台密码登录\n- 后续接口通过 `X-Token` 校验\n- 不依赖 JWT、Session、Redis\n\n因此更适合：\n\n- 本机使用\n- 内网使用\n- 受控服务器环境\n\n如果后续要面向公网部署，建议继续补强：\n\n- 更安全的认证机制\n- HTTPS\n- 更细粒度的权限控制\n- 敏感信息加密存储\n\n## 后续可扩展方向\n\n- 支持更多邮箱状态标签的自动化归类\n- 支持导出账号数据\n- 支持更丰富的邮件搜索\n- 支持多管理员账号\n- 支持 Docker 部署\n- 支持更完善的异常告警\n\n## 说明\n\n这个项目强调的是：\n\n- 轻量\n- 易部署\n- 易维护\n- 面向真实批量邮箱管理场景\n\n如果你正需要一个可以快速落地的 Hotmail 邮箱管理后台，这个项目会是一个很直接的起点。\n","MicroSoftEmailManage 是一个基于 FastAPI 和 SQLite 的 Hotmail\u002FOutlook 邮箱管理后台，适合本地部署和个人或小团队内部使用。其核心功能包括批量导入邮箱账号、标签和备注管理、每日自动刷新 OAuth 令牌以及邮件查看等。项目通过 FastAPI 提供高效稳定的后端服务，并使用 SQLite 作为轻量级数据库，无需额外的数据库服务，降低了部署成本。此外，它还支持 IMAP 协议进行邮件读取，并通过 OAuth 2.0 进行身份验证。这个工具非常适合需要集中管理和维护多个 Hotmail\u002FOutlook 账号的场景，如多组邮箱账号的标签分类、定期维护 OAuth 令牌以减少人工处理需求，以及在一个简单后台中快速查看收件箱和垃圾箱邮件。",2,"2026-06-11 04:03:42","CREATED_QUERY"]