首页/网络/协议速查/IMAP 邮件标志(Flags)

IMAP 邮件标志(Flags)

服务器端状态用标志表达:已读、已回复、星标、待删除、草稿;客户端同步的本质就是读改这些标志。

协议速查网络更新于 2026-10-13

IMAP 标志是什么

IMAP 把邮件的状态保存在服务器上,用标志(flag)来表达:已读、已回复、星标、待删除、草稿、新到。多个客户端之所以能同步「哪些邮件读过了」,靠的就是读写这些标志,而不是把状态存在本机。系统标志以反斜杠开头,由协议固定;在服务器支持的情况下还可以使用自定义关键字标志来做更细的分类。

基本信息

存储位置服务器端的邮箱状态里
系统标志以反斜杠开头,如 \Seen、\Deleted
自定义标志用户关键字,需服务器支持
同步实质客户端读写标志并解析变化
命令STORE 写入,FETCH 读取,EXPUNGE 生效删除
权限需要邮箱的读写权限,只读账号只能查看

标志含义与来源

标志含义通常由谁设置
\Seen已读客户端,或 FETCH 正文时自动置位
\Answered已回复客户端
\Flagged星标,标记为重要客户端
\Deleted待删除,等 EXPUNGE 生效客户端
\Draft草稿客户端
\Recent本会话新到,只读服务器

读写与生效

读写与生效
a1 STORE 7 +FLAGS (\Seen)        # 追加标志
a2 STORE 7 -FLAGS (\Flagged)     # 去掉标志
a3 STORE 7 FLAGS (\Deleted)      # 替换式赋值
* 7 FETCH (FLAGS (\Deleted))     # 服务器回显确认
a4 EXPUNGE                        # 真正删除已标记的邮件

典型使用场景

  • 排查「手机读过了电脑还是未读」:检查客户端是否被设为只读或未同步标志
  • 容量清理:确认 \Deleted 是否已被 EXPUNGE,未生效的邮件仍占服务器空间
  • 自动化归档:脚本按 \Flagged 或自定义关键字挑选邮件再移动
  • 迁移与备份:工具会读取并重放标志,遗漏会导致迁移后全是未读
  • 权限验证:用只读账号登录后尝试写标志,应被服务器拒绝
两个容易踩的点:\Recent 是会话级状态,客户端不能设置;EXPUNGE 会永久删除邮件并可能改变消息序号,稳定的引用应该用 UID 而不是序号。自动化脚本操作前先 FETCH 一遍确认目标,避免删错。另外不同客户端对「移动到文件夹」的实现并不一致:有的用复制加删除,有的依赖服务器扩展,迁移工具选型前先验证标志能否完整重放。

易错点

  • 标记 \Deleted 后忘记 EXPUNGE,邮件仍在服务器占空间,用户以为已经删掉
  • 用序号而不是 UID 做脚本引用:一次 EXPUNGE 之后序号整体前移,后续操作全打偏
  • 在只读账号上执行 STORE 被拒后误判为服务端故障,实际是权限设计如此
  • 把 \Answered 当成「回复已送达」的凭据:它只表示客户端执行过回复动作

数据来源与参考

  • RFC 3501 §2.3.2(标志)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌