FairEmail 中文文档 下载 App

FairEmail 数据库损坏恢复与已知 Android Bug 规避

这是 FairEmail 自身的 bug 吗

FairEmail 开发者在 FAQ 的「已知问题」板块中明确列出了一个严重问题——在部分 Android 12 / 13 设备上,FairEmail 的本地 SQLite 数据库可能损坏,导致本地邮件数据丢失。

受影响的设备品牌:

开发者给出的结论非常明确:

这不是 FairEmail 的 bug。原因是 Android 系统本身的 disk I/O 错误(更可能)或硬件问题(更少)。堆栈跟踪显示 SQLite 在写入数据库期间遇到了 I/O 错误。FairEmail 无法修复这个问题——它必须由设备厂商通过 Android 系统更新来解决。

为什么 FairEmail 特别容易触发

FairEmail 在本地密集使用 SQLite 数据库来存储邮件数据、账户配置、过滤规则、搜索索引等。大多数主流邮箱客户端(如 Gmail、Outlook)把邮件内容存储在云端,本地只缓存最近一小部分——而 FairEmail 的「完全本地存储」设计让它比其他 App 更密集地操作本地数据库。

当 Android 系统或硬件层面出现 I/O 错误时,FairEmail 首当其冲。

数据库损坏的表现

如果 FairEmail 的本地数据库损坏,你会看到以下一种或多种表现:

恢复方法

第一步:重启 FairEmail

有时候 FairEmail 只是启动时遇到了临时数据库锁。先试试:

  1. 彻底退出 FairEmail(从近期任务列表划掉)
  2. 重新打开 FairEmail
  3. 看邮件是否恢复了

第二步:检查服务器上的邮件

FairEmail 的「本地数据库损坏」问题只影响 FairEmail 本地存储的邮件副本。服务器上的邮件(IMAP 账户)不会被删除——FairEmail 从不主动从服务器删除邮件,除非你显式操作。

恢复方法:

  1. FairEmail 打开后重新连接 IMAP 服务器
  2. FairEmail 会把服务器上的邮件重新同步回本地数据库
  3. 同步完成后,邮件应该恢复了

⚠️ 例外:POP3 账户。如果你用的是 POP3 协议并且开启了「从服务器删除邮件」选项(FairEmail 默认不开启),FairEmail 下载邮件后会从服务器删除。如果 FairEmail 本地数据库损坏而 POP3 账户又设置了删除服务器邮件,那这些邮件可能永远丢失了。

第三步:检查本地文件夹

FairEmail 有两种文件夹来源:

如果你有 FairEmail 本地文件夹(用来存放不想同步到服务器的邮件),数据库损坏会导致这些邮件丢失。Pro 用户可以考虑用「导出设置」功能定期备份(但导出设置只备份 FairEmail 的配置,不备份邮件内容)。

第四步:重新安装 FairEmail

如果以上方法都试过了还是不行:

  1. 卸载 FairEmail(先确保没有 FairEmail 本地文件夹中的重要邮件——卸载会删除所有本地数据)
  2. 重新安装 FairEmail(Play Store / GitHub / F-Droid)
  3. 重新配置账户
  4. FairEmail 会从服务器重新同步所有邮件

⚠️ 重新安装前确认:你只有 IMAP 账户(不是 POP3),且服务器上的邮件还在。

预防措施

措施一:定期用 FairEmail Pro 的「导出设置」

Pro 功能的「导出设置」会把 FairEmail 的所有配置(账户、身份、过滤规则、偏好设置)打包保存。数据库损坏后重新安装 FairEmail,再用「导入设置」恢复配置,不用手动重新设置。

但注意:导出设置不包含邮件内容(邮件内容本身就在服务器上,重同步即可)。

措施二:避免用 POP3 + 删除服务器邮件

始终用 IMAP 协议,并且确保 FairEmail 设置中没有开启「从服务器删除已下载邮件」选项。这样 FairEmail 本地数据丢失后随时可以从服务器恢复。

措施三:关注设备厂商更新

这个问题的根因在 Android 系统或硬件层面。如果你的设备在受影响列表中,关注厂商是否推送了修复 I/O 错误的系统更新。小米、OPPO、OnePlus 等厂商通常会在发现问题后的 1~3 个月内推送安全补丁。

措施四:不要过度频繁地操作 FairEmail 数据库

尽量避免:

其他已知 Android Bug

FairEmail FAQ 中还列出了一些 Android 系统 bug 可能导致的问题:

Bug 表现影响解决
「Bad notification posted」崩溃更新 FairEmail 后点通知闪退系统层面 bug,FairEmail 加了 workaround
「ActivityRecord not found」崩溃更新 FairEmail 后闪退重新安装
「InputChannel is not initialized」崩溃部分设备随机崩溃系统 bug,无法在 App 层修复
邮件预览在三星手表上不显示手表通知看不到正文预览系统 setLocalOnly 行为问题
Android 6.0 选中文字后点外部崩溃点选中文本外部时闪退更新到 Android 6.0.1

这些问题大多数 FairEmail 已经通过 workaround 或版本更新缓解。如果遇到某个具体问题,先确认 FairEmail 版本是最新的。