同步与离线
DesireCore 的邮件数据存储在本地,通过后台同步保持与邮箱服务器的一致。即使在没有网络的情况下,你仍然可以查看已同步的邮件并执行操作。
同步机制
自动同步
添加邮箱后,DesireCore 会自动启动后台轮询,定时检查新邮件。
增量同步
为了节省流量和提高效率,DesireCore 使用增量同步——只获取上次同步以来的变更:
| 邮箱类型 | 增量同步方式 | 说明 |
|---|---|---|
| Gmail | History API | 通过 historyId 追踪变更,只获取新增和修改的邮件 |
| Outlook | Delta API | 使用 deltaLink 增量查询,效率高 |
| IMAP | UID 追踪 | 记录最后同步的 UID,只拉取更新的邮件 |
手动同步
在邮件视图的顶部栏点击同步按钮,可以立即触发一次同步。统一收件箱视图中的同步全部按钮会同时触发所有账户的同步。
同步状态
顶部栏会实时显示同步状态:
- 同步中 — 蓝色脉冲动画
- 同步失败 — 红色指示器
- 已完成 — 显示上次同步时间,如「5分钟前」
本地存储
同步到本地的邮件以如下结构存储:
~/.desirecore/mail/
├── gmail/
│ └── user@gmail.com/
│ ├── meta.json # 账户信息、同步状态
│ ├── index.json # 邮件索引(用于快速搜索和列表)
│ └── messages/ # 每封邮件的完整内容
├── outlook/
│ └── ...
└── imap/
└── ...
- 索引文件 存储邮件的轻量元数据,用于列表展示和搜索
- 邮件文件 存储完整的邮件正文和附件信息
- 所有敏感信息(Token、密码)使用 AES-256-GCM 加密存储
离线操作
当你在没有网络连接的情况下执行邮件操作时,DesireCore 不会报错——操作会被放入离线队列,等网络恢复后自动执行。
支持离线排队的操作
| 操作 | 说明 |
|---|---|
| 标记已读/未读 | 恢复网络后同步到服务器 |
| 删除邮件 | 恢复网络后在服务器上执行删除 |
| 移动到文件夹 | 恢复网络后移动 |
| 添加/移除标签 | 恢复网络后同步标签变更 |
| 发送邮件 | 恢复网络后自动发送 |
| 归档 | 恢复网络后执行归档 |
队列处理
离线操作队列的处理规则:
- 恢复网络后自动按顺序执行
- 每个操作最多重试 3 次
- 重试失败的操作会标记为「失败」,你可以查看失败原因并手动重试或删除
乐观更新
即使在离线状态下,你在 DesireCore 中看到的状态也会立即更新(如邮件标记为已读后界面立即变化)。如果后续同步到服务器时失败,状态会回滚。
同步设置
你可以为每个邮箱账户单独配置同步选项:
| 设置项 | 说明 |
|---|---|
| 同步间隔 | 自动轮询的时间间隔(分钟),设为 0 可禁用自动同步 |
| 新邮件通知 | 是否在有新邮件时推送通知 |