v1.0.0
- 登录: QQ/163/126/189/搜狐/Gmail/Outlook/Yahoo/iCloud/企业邮/自定义, 自动识别+测试连接 - 收信: IMAP 多文件夹同步/未读/星标/搜索(本地+服务器) - 读信: HTML渲染/CID内嵌图/原文查看/附件下载 - 写信: 收件人/抄送/密送/附件/富文本/草稿/回复转发 - 存储: SQLite + 系统安全存储(DPAPI/Keychain/Keystore) - 测试: 单元测试 + Mock IMAP/SMTP 服务器集成测试(23项全过) - 可迁移: Windows/Android/iOS/macOS/Linux 一套代码
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 响应式:桌面三栏布局,窄屏自动切换单栏 + 全屏详情
- 密码安全存储按平台自动适配
🚀 构建
环境准备
- 安装 Flutter SDK(≥3.24)
- Windows 构建需 Visual Studio 2022(勾选"使用 C++ 的桌面开发")
- 命令行执行:
flutter pub get
Windows(打包 exe)
flutter build windows --release
# 产物: build/windows/x64/runner/Release/MailHub.exe
一键打包脚本(需已构建):
# PowerShell
.\scripts\package_windows.ps1
Linux
flutter build linux --release
# 产物: build/linux/x64/release/bundle/
Android
flutter build apk --release
iOS / macOS(需 macOS 机器 + Xcode)
flutter build ipa --release # iOS
flutter build macos --release # macOS
🧪 测试
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 优先,全平台可构建)
已知限制(后续版本规划)
- OAuth2(Gmail/Outlook 免密登录)预留扩展点
- IDLE 实时推送(当前为手动/定时刷新,接口已预留)
- 会话(thread)聚合
- 转发时携带附件
Languages
Dart
78.8%
C++
8.4%
CMake
6.4%
Python
4.5%
Swift
1.1%
Other
0.8%