FairEmail 中文文档 下载 App

FairEmail 后台推送不工作:IMAP IDLE 与前台服务

FairEmail 为什么有一个常驻通知

FairEmail 启动后,Android 通知栏会持续显示一个常驻通知——通常叫「FairEmail 正在同步」或类似文字。很多用户第一次看到这个通知会想把它手动划掉,但划掉之后会很快发现:FairEmail 不再能及时收到新邮件了。

这个常驻通知不是设计失误,而是 Android 系统机制决定的——FairEmail 必须保持一个 前台服务(Foreground service) 来维持 IMAP IDLE 连接。Android 8 之后的系统对后台应用限制严格:不在前台的 App 随时可能被系统杀掉进程。而 IMAP IDLE 推送需要 FairEmail 一直运行着——被系统杀掉的话,推送自然中断。

所以 FairEmail 的前台通知是有意保留的设计,不是 bug。

通知能关掉吗

可以。Android 8+ 的渠道通知机制允许你:

  1. FairEmail 设置 → 「监测通道」或「监控通道」(Monitoring channel)
  2. 点击这个通道 → 跳转到 Android 系统通知设置
  3. 关闭这个通道的通知

关闭后,FairEmail 的前台服务仍然保持运行(IMAP IDLE 连接不会断),只是通知不再显示。适合不想被通知打扰但又需要保持推送的用户。

⚠️ 关闭通知通道的副作用:Android 有时会以「通知异常」为理由杀掉前台服务。如果发现关闭通知后推送也停了,需要重新开启。

IMAP IDLE 推送原理

FairEmail 的实时推送核心是 IMAP IDLE 命令——这是 IMAP 协议的一个扩展,允许客户端在不主动轮询的情况下让服务器在有新邮件时主动通知客户端。

工作流程:

  1. FairEmail 启动 IMAP 连接
  2. 连接建立后,FairEmail 发送 IDLE 命令给服务器
  3. 服务器确认 IDLE 命令,连接进入「空闲等待」状态
  4. 服务器上有新邮件到达时,立即通过这条连接发送通知
  5. FairEmail 收到通知 → 触发同步 → 拉取新邮件 → 弹出通知

对比「定时轮询」(每隔 N 分钟主动查一次有没有新邮件),IMAP IDLE:

推送不工作的排查步骤

第一步:检查前台服务是否还在

打开 Android 通知栏,看 FairEmail 的常驻通知是否存在:

如果前台服务消失了,尝试:

  1. 重新打开 FairEmail App → 它会重新启动前台服务
  2. Android 设置 → 电池 → FairEmail → 关闭「电池优化」或设置为「不限制」
  3. FairEmail 设置中检查「保持后台服务运行」相关选项(不同版本措辞不同)

第二步:检查电池优化

Android 系统对后台进程的管理非常激进——如果 FairEmail 被标记为「被电池优化」,系统可能在待机时杀掉它的前台服务。

检查路径:Android 设置 → 电池 → 电池优化 → FairEmail → 设置为「不优化」。

第三步:检查厂商的「自启动」和「后台限制」

小米、OPPO、VIVO、华为等定制 ROM 有比原生 Android 更激进的后台管理:

每个厂商的措辞不同,但核心都一样——确保 FairEmail 不会被系统主动杀掉。

第四步:检查 IMAP 连接状态

FairEmail 设置 → 手动设置 → 账户 → 选择账户 → 找到「连接状态」或「最后一次同步」:

第五步:检查网络状态

IMAP IDLE 连接对网络变化敏感:

第六步:Android 13+ 特殊权限

Android 13 引入了「闹钟与提醒(Alarms & reminders)」权限——FairEmail 的推送定时依赖这个权限。如果 FairEmail 被系统杀掉后无法自动恢复,检查:

  1. Android 设置 → 应用 → FairEmail → 权限
  2. 找到「闹钟与提醒」或「精确闹钟」权限 → 确保已授予

推送延迟或丢失

如果 FairEmail 能推送但经常延迟(几分钟后才收到新邮件通知):

不推送的兜底方案

如果不管怎么调 FairEmail 都无法保持 IMAP IDLE 连接,有一个兜底办法——用 FairEmail 的定时同步功能(在每个账户的高级设置中):