Files
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

4.1 KiB
Raw Permalink Blame History

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(≥3.24
  2. Windows 构建需 Visual Studio 2022(勾选"使用 C++ 的桌面开发"
  3. 命令行执行:
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:直接使用账户密码;开启双重验证后用应用密码
  • iCloudApple ID 设置中生成"App 专用密码"
  • 企业邮箱:多数支持客户端专用密码

📝 版本

  • v1.0.0 首版:全功能邮箱客户端(Windows 优先,全平台可构建)

已知限制(后续版本规划)

  • OAuth2Gmail/Outlook 免密登录)预留扩展点
  • IDLE 实时推送(当前为手动/定时刷新,接口已预留)
  • 会话(thread)聚合
  • 转发时携带附件