# 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 优先,全平台可构建) ## 已知限制(后续版本规划) - OAuth2(Gmail/Outlook 免密登录)预留扩展点 - IDLE 实时推送(当前为手动/定时刷新,接口已预留) - 会话(thread)聚合 - 转发时携带附件