[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81565":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":14,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":21,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":26,"discoverSource":27},81565,"one-mail","zhihui-hu\u002Fone-mail","zhihui-hu","OneMail 是一个本地优先的桌面邮件客户端，使用 Electron + React + TypeScript 构建。它通过 IMAP 同步邮件到本地 SQLite，支持多邮箱聚合、邮件筛选、正文安全预览、附件下载和 SQL 备份导入导出。","https:\u002F\u002Fzhihui-hu.github.io\u002Fone-mail\u002F",null,"TypeScript",26,5,1,0,2,43.03,"GNU Affero General Public License v3.0",false,"main",true,[],"2026-06-11 04:07:33","# OneMail\n\n\u003Cp align=\"left\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FElectron-39-47848F?logo=electron&logoColor=white\" alt=\"Electron 39\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-19-282C34?logo=react&logoColor=61DAFB\" alt=\"React 19\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-5.9-3178C6?logo=typescript&logoColor=white\" alt=\"TypeScript 5.9\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTailwind_CSS-4-06B6D4?logo=tailwind-css&logoColor=white\" alt=\"Tailwind CSS 4\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fshadcn\u002Fui-black?style=flat&logo=vercel&logoColor=white\" alt=\"shadcn\u002Fui\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLucide_React-yellow?logo=lucide&logoColor=black\" alt=\"Lucide React\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSQLite-local-003B57?logo=sqlite&logoColor=white\" alt=\"SQLite\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpnpm-orange?logo=pnpm&logoColor=white\" alt=\"pnpm\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPrettier-code_style-F7B93E?logo=prettier&logoColor=black\" alt=\"Prettier\" \u002F>\n\u003C\u002Fp>\n\nOneMail 是一个本地优先的桌面邮件客户端，使用 Electron + React + TypeScript 构建。它通过 IMAP 同步邮件到本地 SQLite，支持多邮箱聚合、邮件筛选、正文安全预览、附件下载和 SQL 备份导入导出。\n\n**语言**：中文 | [English](.\u002FREADME.en.md)\n\n**项目主页 \u002F 下载页**：[https:\u002F\u002Fzhihui-hu.github.io\u002Fone-mail\u002F](https:\u002F\u002Fzhihui-hu.github.io\u002Fone-mail\u002F)\n\n## ✨ 功能特性\n\n- 📬 **多邮箱账号**：支持 Gmail、Yahoo、阿里邮箱、阿里企业邮箱、189、搜狐、QQ\u002FFoxmail、网易、Outlook\u002FHotmail、新浪、139、21CN、完美邮箱、iCloud、AOL、Yandex、Mail.ru 和自定义 IMAP。\n- 🧩 **统一收件箱体验**：多账号聚合查看，账号列表展示未读数、同步状态和账号操作。\n- 🔎 **邮件快速筛选**：支持未读、有附件、星标、今日等组合筛选。\n- ✅ **已读状态同步**：打开未读邮件后自动标记已读，并通过 IMAP 同步到远端邮箱。\n- 📨 **正文按需加载**：点击邮件后再拉取正文，减少启动和同步成本。\n- 🛡️ **HTML 安全预览**：净化邮件 HTML，默认阻止远程图片和外部资源。\n- 📎 **附件表格与下载**：正文区域以表格展示附件元数据，点击即可选择路径下载。\n- ✍️ **Gmail 风格写信窗口**：支持新邮件、回复、回复全部、转发、抄送\u002F密送按需展开、富文本格式、附件和草稿保存。\n- 🔐 **本地凭据加密**：邮箱密码或授权码使用 AES-256-GCM 加密后保存到本地数据库。\n- 💾 **SQLite 本地缓存**：账号、邮件头、正文、附件元数据、搜索索引和设置均保存在本机。\n- ♻️ **安全备份导入导出**：支持导出当前数据库为 SQL 文件，也可在首次启动时直接导入 SQL 备份。\n- ⚙️ **可配置同步策略**：可设置同步间隔、缓存窗口和外部图片策略。\n\n---\n\n## 📸 预览图\n\n\u003Cp>\n  \u003Cimg src=\"https:\u002F\u002Fimg.huzhihui.com\u002F2026\u002F05\u002F15\u002FOnaMail-03.webp\" alt=\"OneMail 邮件阅读预览\" width=\"100%\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp>\n  \u003Cimg src=\"https:\u002F\u002Fimg.huzhihui.com\u002F2026\u002F05\u002F15\u002FOnaMail-02.webp\" alt=\"OneMail 邮件列表预览\" width=\"100%\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp>\n  \u003Cimg src=\"https:\u002F\u002Fimg.huzhihui.com\u002F2026\u002F05\u002F15\u002FOnaMail-01.webp\" alt=\"OneMail 账号管理预览\" width=\"100%\" \u002F>\n\u003C\u002Fp>\n\n---\n\n## 🖥️ 界面概览\n\nOneMail 当前采用三栏桌面布局：\n\n1. **账号栏**：管理邮箱账号，查看未读数，同步单个账号或全部账号。\n2. **邮件列表**：展示当前账号或统一收件箱的邮件，顶部提供标签筛选。\n3. **阅读区**：展示邮件主题、收发件人、正文、安全预览提示和附件表格。\n\n写信窗口采用贴近 Gmail 的浮层交互：顶部可展开\u002F还原或保存并关闭；收件人行可按需展开抄送、密送；底部提供发送、格式栏开关、附件、链接、保存草稿和丢弃草稿操作。\n\n设置页提供同步策略、SQL 导入导出和关于信息；关于页会显示版本、作者、GitHub 项目入口，并可手动检查 GitHub Release 更新。\n\n首次没有账号时，可以直接添加账号，也可以通过 **导入 SQL** 恢复已有备份。\n\n---\n\n## 🛠️ 本地开发\n\n### 环境要求\n\n- Node.js 22 或更高版本\n- pnpm（推荐）或 npm\n- macOS \u002F Windows \u002F Linux 桌面环境\n\n### 安装依赖\n\n```bash\npnpm install\n# 或\nnpm install\n```\n\n### 启动开发模式\n\n```bash\npnpm dev\n# 或\nnpm run dev\n```\n\n开发模式会启动 Electron + Vite，渲染层支持热更新。\n\n### 类型检查\n\n```bash\npnpm typecheck\n# 或\nnpm run typecheck\n```\n\n### 代码检查\n\n```bash\npnpm lint\n# 或\nnpm run lint\n```\n\n### 构建生产版本\n\n```bash\npnpm build\n# 或\nnpm run build\n```\n\n### 打包桌面应用\n\n```bash\n# 生成未打包目录\npnpm build:unpack\n\n# Windows 安装包\npnpm build:win\n\n# macOS DMG\npnpm build:mac\n\n# Linux AppImage \u002F snap \u002F deb\npnpm build:linux\n```\n\n---\n\n## 🎯 使用说明\n\n1. **添加邮箱账号**：点击右上角添加按钮，选择常见邮箱服务商或自定义 IMAP。\n2. **填写凭据**：内置邮箱只需填写邮箱、密码\u002F授权码和可选别名；自定义 IMAP 需要填写服务器、端口和安全模式。\n3. **同步邮件**：新增账号后会自动同步收件箱，也可以在账号栏手动同步。\n4. **筛选邮件**：使用未读、有附件、星标、今日标签快速缩小邮件范围。\n5. **自动标记已读**：打开未读邮件后会自动标记已读，并同步到远端邮箱。\n6. **阅读正文**：点击邮件后加载正文；HTML 邮件会先以安全预览方式显示。\n7. **加载完整内容**：需要查看远程图片时，可在阅读区顶部点击加载完整内容。\n8. **下载附件**：在正文底部附件表格中点击附件行或下载按钮，选择保存路径。\n9. **撰写和回复**：点击写信、回复、回复全部或转发打开写信窗口；点击抄送\u002F密送可展开更多收件人行，`Aa` 可切换格式工具栏。\n10. **保存或丢弃草稿**：关闭有内容的写信窗口会保存草稿；底部垃圾桶可丢弃已保存草稿。\n11. **备份数据**：在设置中导出 SQL 备份；无账号空状态也可以直接导入 SQL 备份。\n\n---\n\n## 🔐 数据与安全\n\n- OneMail 的数据库文件位于 Electron `userData\u002FOneMail\u002Fonemail.sqlite`。\n- 邮箱密码或授权码不会明文写入数据库，会使用本地数据库密钥派生的 AES-256-GCM 密钥加密。\n- SQL 备份文件会校验文件名中的密钥、Linux 时间戳和 SQL 头部信息。\n- HTML 邮件会经过基础净化，默认阻止远程图片和外部资源，降低隐私泄露风险。\n- 附件默认只保存元数据，只有用户点击下载时才写入本地文件。\n\n---\n\n## 📁 项目结构\n\n```text\nsrc\u002F\n├── main\u002F                 # Electron 主进程、IPC、SQLite、IMAP 同步\n│   ├── db\u002F               # 数据库连接、schema、repositories\n│   ├── ipc\u002F              # accounts\u002Fmessages\u002Fsync\u002Fsettings\u002Fsystem IPC\n│   ├── mail\u002F             # IMAP 同步、正文解析、附件下载\n│   └── services\u002F         # 凭据加密、SQL 备份等服务\n├── preload\u002F              # contextBridge 暴露给渲染进程的安全 API\n├── renderer\u002Fsrc\u002F         # React UI\n│   ├── components\u002F       # 邮件、账号、设置和 shadcn\u002Fui 组件\n│   ├── lib\u002F              # 渲染层 API 适配和工具函数\n│   └── assets\u002F           # 图标和样式资源\n└── shared\u002F               # 主进程、preload、渲染进程共享类型\n```\n\n---\n\n## 📦 技术栈\n\n- [Electron](https:\u002F\u002Fwww.electronjs.org\u002F) - 跨平台桌面应用框架\n- [electron-vite](https:\u002F\u002Felectron-vite.org\u002F) - Electron + Vite 开发构建工具\n- [React](https:\u002F\u002Freact.dev\u002F) - 渲染层 UI\n- [TypeScript](https:\u002F\u002Fwww.typescriptlang.org\u002F) - 类型系统\n- [Tailwind CSS](https:\u002F\u002Ftailwindcss.com\u002F) - 原子化样式\n- [shadcn\u002Fui](https:\u002F\u002Fui.shadcn.com\u002F) - UI 组件\n- [Lucide React](https:\u002F\u002Flucide.dev\u002F) - 图标库\n- [SQLite](https:\u002F\u002Fwww.sqlite.org\u002F) - 本地数据存储\n\n---\n\n## 🤝 贡献\n\n欢迎提交 Issue 和 Pull Request。建议在提交前运行：\n\n```bash\npnpm typecheck\npnpm lint\n```\n\n## 📄 许可证\n\n本项目采用 [GNU Affero General Public License v3.0](.\u002FLICENSE)（AGPL-3.0-only）许可。\n\n你可以在遵守 AGPL v3.0 条款的前提下使用、复制、修改和分发本项目；如果通过网络提供修改后的版本，也需要按 AGPL 要求向用户提供相应源代码。\n\n## 🙏 致谢\n\n- [Electron](https:\u002F\u002Fwww.electronjs.org\u002F) - 桌面应用运行时\n- [electron-vite](https:\u002F\u002Felectron-vite.org\u002F) - 开发构建工具\n- [shadcn\u002Fui](https:\u002F\u002Fui.shadcn.com\u002F) - UI 组件库\n- [Lucide](https:\u002F\u002Flucide.dev\u002F) - 图标库\n- [SQLite](https:\u002F\u002Fwww.sqlite.org\u002F) - 本地数据库\n\n---\n\n**注意**：OneMail 目前以本地 IMAP 邮件同步和桌面阅读为核心能力。使用 Gmail、Outlook、QQ、网易、Yahoo、iCloud 等服务时，请先在邮箱后台开启 IMAP\u002FSMTP，并按服务商要求使用应用专用密码、授权码或专用密码。\n","OneMail 是一个本地优先的桌面邮件客户端，使用 Electron、React 和 TypeScript 构建。它通过 IMAP 协议将邮件同步到本地 SQLite 数据库，支持多邮箱聚合、邮件筛选、正文安全预览、附件下载以及 SQL 备份导入导出等功能。核心特点包括统一收件箱体验、快速筛选未读和有附件邮件、已读状态同步、HTML 安全预览等。该应用适合需要高效管理和处理多个电子邮件账户的用户，尤其是在需要离线访问邮件和保障数据安全的场景下使用。","2026-06-11 04:05:32","CREATED_QUERY"]