Files
mail-hub/README.md
T
hz4th_coder 6c1225f588 MailHub v1.0.0: 跨平台邮箱客户端(纯 Dart IMAP/SMTP/MIME 协议栈)
- 登录: QQ/163/126/189/搜狐/Gmail/Outlook/Yahoo/iCloud/企业邮/自定义, 自动识别+测试连接
- 收信: IMAP 多文件夹同步/未读/星标/搜索(本地+服务器)
- 读信: HTML渲染/CID内嵌图/原文查看/附件下载
- 写信: 收件人/抄送/密送/附件/富文本/草稿/回复转发
- 存储: SQLite + 系统安全存储(DPAPI/Keychain/Keystore)
- 测试: 单元测试 + Mock IMAP/SMTP 服务器集成测试(23项全过)
- 可迁移: Windows/Android/iOS/macOS/Linux 一套代码
2026-08-18 01:10:11 +08:00

119 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MailHub 邮箱客户端 📧
跨平台邮箱客户端:**Windows / macOS / Linux / Android / iOS** 一套代码。
协议层(IMAP / SMTP / MIME)全部**纯 Dart 自研**,零平台依赖 —— 从 Windows 迁移到安卓/iOS/Mac 无需改动协议与业务代码,只需各平台构建即可。
## ✨ 功能
| 模块 | 功能 |
|------|------|
| 邮箱登录 | QQ邮箱、网易163/126、天翼189、搜狐、Gmail、Outlook/Hotmail、Yahoo、iCloud、腾讯企业邮、阿里企业邮、网易企业邮、自定义服务器;邮箱自动识别服务商;测试连接 |
| 收信 | IMAP (TLS 993 / STARTTLS 143)、多文件夹、增量同步、未读数、星标、已读/未读 |
| 读信 | HTML 富文本渲染、内嵌图片(CID)、纯文本视图、邮件原文查看、附件下载/打开 |
| 写信 | 收件人/抄送/密送、附件、富文本/纯文本切换、自动签名位、草稿保存 |
| 邮件操作 | 回复/回复全部/转发(带引用)、删除(进废纸篓)、移动文件夹、标记已读 |
| 搜索 | 本地缓存搜索 + IMAP 服务器搜索 |
| 编码支持 | UTF-8 / GBK / GB2312 / BIG5(降级) / Shift-JIS(降级) / 引号可打印 / Base64 |
| 账户管理 | 多账户、密码存系统安全存储(Windows DPAPI / Keychain / Keystore |
| 外观 | 深色/浅色模式、账户主题色 |
## 🏗 架构
```
lib/
├── core/ # 纯 Dart 核心(与 UI/平台无关,可独立测试)
│ ├── models/ # 数据模型
│ ├── protocol/
│ │ ├── imap/ # IMAP 客户端(自研)
│ │ ├── smtp/ # SMTP 客户端(自研)
│ │ ├── mime/ # MIME 解析/构造(自研)
│ │ └── providers.dart # 邮箱服务商预设
│ ├── storage/ # SQLite + 安全存储
│ └── service/ # 业务编排(收发/同步/搜索)
├── ui/ # Flutter 界面
│ ├── pages/ # 登录/主页/详情/写信/设置
│ ├── widgets/
│ └── app_state.dart # 全局状态
└── main.dart
```
**迁移友好设计:**
- `core/protocol` 只依赖 `dart:io` / `dart:convert` —— 任何平台可用
- 存储层自动分流:桌面端 `sqflite_common_ffi`,移动端原生 `sqflite`
- UI 响应式:桌面三栏布局,窄屏自动切换单栏 + 全屏详情
- 密码安全存储按平台自动适配
## 🚀 构建
### 环境准备
1. 安装 [Flutter SDK](https://docs.flutter.dev/get-started/install)(≥3.24
2. Windows 构建需 [Visual Studio 2022](https://visualstudio.microsoft.com/)(勾选"使用 C++ 的桌面开发"
3. 命令行执行:
```bash
flutter pub get
```
### Windows(打包 exe
```bash
flutter build windows --release
# 产物: build/windows/x64/runner/Release/MailHub.exe
```
一键打包脚本(需已构建):
```bash
# PowerShell
.\scripts\package_windows.ps1
```
### Linux
```bash
flutter build linux --release
# 产物: build/linux/x64/release/bundle/
```
### Android
```bash
flutter build apk --release
```
### iOS / macOS(需 macOS 机器 + Xcode
```bash
flutter build ipa --release # iOS
flutter build macos --release # macOS
```
## 🧪 测试
```bash
flutter test
```
覆盖:MIME 解析(RFC2047/GBK/附件/CID/RFC2231)、IMAP 响应解析(FETCH 字面量/SEARCH/LIST/STATUS)、MIME 构造往返。
## 🔑 各邮箱登录说明
- **QQ/163/126**:需在网页端开启 IMAP/SMTP 服务,使用**授权码**(非登录密码)
- **Gmail**:开启两步验证后生成"应用专用密码"
- **Outlook**:直接使用账户密码;开启双重验证后用应用密码
- **iCloud**Apple ID 设置中生成"App 专用密码"
- **企业邮箱**:多数支持客户端专用密码
## 📝 版本
- v1.0.0 首版:全功能邮箱客户端(Windows 优先,全平台可构建)
## 已知限制(后续版本规划)
- OAuth2Gmail/Outlook 免密登录)预留扩展点
- IDLE 实时推送(当前为手动/定时刷新,接口已预留)
- 会话(thread)聚合
- 转发时携带附件