Skip to content

Latest commit

 

History

History
369 lines (278 loc) · 12 KB

File metadata and controls

369 lines (278 loc) · 12 KB

Email-Manager

Email-Manager 是一个 Microsoft 邮箱账户与邮件管理面板,提供 Web UI、批量导入、邮件检索、标签管理、API Key 管理和接口文档。

项目仓库: https://github.com/dangweilinshinidie/Email-Manager

快速跳转

部署入口

新版本更新

当前版本已支持 2 种邮箱接入方式,可按账户情况自由选择:

  1. IMAP 适合继续使用传统微软邮箱邮件读取流程,基于 OAuth2 + IMAP 获取邮件内容。
  2. Microsoft Graph API 适合使用 Graph 权限体系的场景,通过 Microsoft Graph API 读取邮件与详情。

这 2 种方式目前都已经支持:

  • 单个账户添加
  • 批量账户导入
  • 连接测试
  • 邮件列表读取
  • 邮件详情查看

批量导入时的格式说明:

  • Graph API邮箱----密码----client_id----令牌
  • IMAP:支持 邮箱----刷新令牌----客户端ID,兼容旧格式 邮箱----占位密码----刷新令牌----客户端ID,也支持 Outlook_OA2 格式 邮箱----密码----client_id----refresh_token

docker-compose 一键部署

如果你已经拉取了仓库,直接执行下面命令就可以部署:

git clone https://github.com/dangweilinshinidie/Email-Manager.git Email-Manager
cd Email-Manager
docker-compose up -d

部署完成后默认访问:

说明:

  • 当前仓库内的 docker-compose.yml 默认会拉取镜像 dangweilinshinidie/email-manager:main
  • 默认把本地 ./data 映射到容器 /app/data
  • 默认端口映射为 8073:8000
  • 默认已包含 TRUST_PROXY_HEADERS=true
  • 如果你的环境使用新版 Docker Compose 插件,也可以使用 docker compose up -d

核心特性

  • 支持 2 种接入方式:IMAP / Microsoft Graph API
  • Microsoft 邮箱账户管理、批量导入、快速检索
  • 收件箱 / 垃圾箱邮件查看与详情展示
  • 邮件主题、发件人、内容搜索
  • API Key 创建、停用、调用记录查看
  • 内置 API 文档,适合二次开发与自动化接入
  • 默认支持 Docker 部署,适合线上长期运行
  • 首次访问支持初始化管理员密码与使用协议确认

线上部署前必看

无论你使用 Railway、Zeabur 还是 ClawCloud Run,部署时都建议保持以下约束:

  • 持久化目录挂载到 /app/data
  • 服务对内端口使用 8000
  • 首次上线后访问 Web 页面完成初始化
  • 如果暴露到公网,请自行配置 HTTPS、访问控制、日志审计和备份
  • 若需要长期稳定运行,优先绑定自定义域名

强制环境变量:

变量名 强制值 / 推荐值 说明
HOST 0.0.0.0 容器内监听地址
PORT 8000 容器内监听端口
DATA_DIR /app/data 数据目录
ACCOUNTS_FILE /app/data/accounts.json 账户数据文件
PYTHONUNBUFFERED 1 便于查看日志
TRUST_PROXY_HEADERS true 强制开启。站点在 Nginx / 宝塔反向代理 / CDN / HTTPS 终止后面时如果未开启,浏览器写请求可能被判定为跨站

健康检查地址:

  • GET /api/auth/state

反向代理补充说明:

  • 如果你的站点前面挂了 Nginx、宝塔反向代理、Caddy、Cloudflare 或其他 HTTPS 终止层,必须同时转发 HostX-Forwarded-Proto
  • 建议额外转发 X-Forwarded-Host
  • 如果未正确转发这些头,后台创建 API Key、批量导入、删除账户这类 POST/PUT/DELETE 请求可能会报错: Cross-site browser requests are not allowed.

Railway 在线部署

Railway 适合直接从 GitHub 仓库快速上线,也适合直接使用 Docker 镜像部署。

跳转链接:

方式一:从 GitHub 仓库部署

  1. 登录 Railway。
  2. 创建新项目并选择 Deploy from GitHub repo
  3. 选择当前项目仓库 dangweilinshinidie/Email-Manager
  4. Railway 会检测到仓库内的 Dockerfile 并自动构建部署。
  5. 为服务添加持久化卷,并挂载到 /app/data
  6. 设置环境变量: HOST=0.0.0.0 PORT=8000 DATA_DIR=/app/data ACCOUNTS_FILE=/app/data/accounts.json TRUST_PROXY_HEADERS=true
  7. 等待部署完成后打开 Railway 分配的域名。
  8. 首次进入页面后完成管理员密码初始化。

方式二:直接使用镜像部署

  1. 在 Railway 新建服务。
  2. 选择 Docker Image 方式。
  3. 填入镜像:dangweilinshinidie/email-manager:main
  4. 挂载持久化卷到 /app/data
  5. 设置与上面一致的环境变量。
  6. 发布后访问域名完成初始化。

Railway 备注

  • Railway 是最省事的部署方式之一。
  • 只要卷路径正确,服务重启后数据会保留。
  • 建议绑定自定义域名并启用 HTTPS。

返回:

Zeabur 在线部署

Zeabur 适合可视化部署和 GitHub 仓库直连部署。

跳转链接:

方式一:导入 GitHub 仓库

  1. 登录 Zeabur。
  2. 新建 Project。
  3. 选择从 GitHub 导入当前项目仓库: https://github.com/dangweilinshinidie/Email-Manager
  4. Zeabur 检测到 Dockerfile 后会按容器方式构建。
  5. 为服务添加持久化存储,挂载目录设为 /app/data
  6. 设置环境变量: HOST=0.0.0.0 PORT=8000 DATA_DIR=/app/data ACCOUNTS_FILE=/app/data/accounts.json TRUST_PROXY_HEADERS=true
  7. 等待部署完成后,使用分配域名访问。

方式二:使用 Docker 镜像

  1. 在 Zeabur 创建新服务。
  2. 选择容器 / Docker Image 方式。
  3. 填入镜像:dangweilinshinidie/email-manager:main
  4. 添加卷并挂载到 /app/data
  5. 配置环境变量并发布。

Zeabur 备注

  • Zeabur 界面化程度更高,适合不想手动写部署脚本的场景。
  • 绑定域名和 HTTPS 也都可以直接在平台内继续配置。

返回:

ClawCloud Run 在线部署

按当前 ClawCloud Run 官方文档,推荐使用 App Launchpad 以容器 / Docker 镜像方式部署本项目,而不是按 VPS 方式处理。

这里我根据官方文档做的判断是:

  • ClawCloud Run 当前更贴近托管容器应用流程
  • 这个项目最适合直接使用公开镜像 dangweilinshinidie/email-manager:main
  • 数据目录仍然应挂载到 /app/data

跳转链接:

推荐方式:App Launchpad + Docker 镜像

  1. 登录 ClawCloud Run。
  2. 进入 App Launchpad
  3. 创建一个新的应用。
  4. 选择容器镜像部署方式。
  5. 填入镜像:dangweilinshinidie/email-manager:main
  6. 将服务端口设置为 8000
  7. 配置环境变量: HOST=0.0.0.0 PORT=8000 DATA_DIR=/app/data ACCOUNTS_FILE=/app/data/accounts.json TRUST_PROXY_HEADERS=true
  8. 如平台支持持久化存储,请将数据目录挂载到 /app/data
  9. 发布后通过平台生成的公网地址访问。
  10. 首次进入页面后完成管理员密码初始化。

需要注意的点

  • 若你不挂载持久化目录,容器重建后数据可能丢失。
  • 如果要长期使用,建议绑定域名并启用 HTTPS。
  • 如果你需要更复杂的资源配置,可以继续参考 Configuration Files 文档。

关于 GitHub 仓库直连

我根据当前可检索到的 ClawCloud Run 官方文档,优先给出的是 App Launchpad + Docker 镜像 方案,因为这是最直接且与本项目最匹配的官方容器部署路径。

如果你后续要把 ClawCloud Run 再细化成“仓库直连构建”版本,我可以再按你指定的平台界面路径继续补一版。

返回:

本地 / 自托管 Docker 部署

如果你不走云平台,也可以直接在自己的服务器或本地机器使用 Docker Compose。

git clone https://github.com/dangweilinshinidie/Email-Manager.git Email-Manager
cd Email-Manager
docker compose up -d

相关文件:

应用商店支持

当前应用商店支持状态如下:

  • GMSSH:已支持,可直接通过应用商店下载安装。
  • 宝塔:敬请期待。
  • aaPanel:敬请期待。
  • 1Panel:敬请期待。

说明:

  • 目前只有 GMSSH 已完成接入。
  • 其他商店图标与入口说明已经预留,但暂未开放下载。

首次使用流程

  1. 打开首页。
  2. 阅读并同意使用协议。
  3. 选择安装模式: MREGISTER适配模式:会自动预置账户分类 MREGISTER 和快捷标签 已注册CHATGPT普通模式:纯净版本,不预置这 2 个默认分类配置。 商业授权版本:界面已预留,当前暂未开放。
  4. 设置管理员密码。
  5. 登录后台。
  6. 添加单个 Microsoft 邮箱账户,或使用批量导入。
  7. 根据账户情况选择 IMAPMicrosoft Graph API 接入方案。
  8. 进入邮件页面查看收件箱 / 垃圾箱邮件。
  9. 如需程序化调用,可进入 API 密钥页面创建 Key。

目录结构

Microsoft-Email-Manager/
├─ main.py
├─ static/
│  ├─ index.html
│  ├─ home.html
│  ├─ open.html
│  └─ favicon.ico
├─ data/
├─ Dockerfile
├─ docker-compose.yml
├─ docker-entrypoint.sh
├─ docker.env.example
├─ requirements.txt
└─ README.md

开发与调试

本地运行

pip install -r requirements.txt
python main.py

默认访问地址:

关键接口

  • GET /api/auth/state
  • POST /api/auth/setup
  • POST /api/auth/login
  • POST /api/auth/logout
  • GET /accounts
  • POST /accounts
  • GET /emails/{email_id}
  • GET /emails/{email_id}/{message_id}
  • GET /api/api-keys
  • POST /api/api-keys

开源说明

本项目为开源程序,适合学习、研究、测试与自部署使用。

联系作者

GitHub: https://github.com/dangweilinshinidie