首页/网络/协议速查/IMAP SEARCH 检索语法

IMAP SEARCH 检索语法

检索在服务器端执行,条件是「与」关系,或用 OR 显式并联;对收件箱自动化(标记/清理/归档)几乎是必备工具。

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

IMAP SEARCH 是什么

SEARCH 命令把检索交给服务器执行,条件之间默认是「与」的关系,需要并列时用 OR 显式写出。它是收件箱自动化的基础:先按发件人、日期、大小或标志挑出目标邮件,再交给后续命令标记、移动或清理。因为检索在服务端完成,脚本不必把整箱邮件拉到本地,这也是它比本地过滤更适合批量整理的原因。

基本信息

执行位置服务器端检索后返回命中编号
默认逻辑多个条件之间是「与」
并列与取反用 OR 连接两个条件,用 NOT 取反
日期格式如 1-Sep-2026,另有按发送日期的变体
内容条件发件人、收件人、主题、正文、全文
状态条件已读、已回复、已删除、自定义关键字

常用检索条件

条件含义备注
FROM 与 TO按发件人、收件人筛选按头字段匹配
SUBJECT按主题筛选不做分词,按子串匹配
BODY 与 TEXT正文与全文TEXT 包含头与正文
SINCE 与 BEFORE按接收日期范围筛选日期不带时间
SENTSINCE按发送日期筛选与接收日期可能不同
SMALLER 与 LARGER按邮件大小筛选单位为字节
UNSEEN 与 FLAGGED按标志筛选可与时间条件组合
KEYWORD按自定义标志筛选需服务器支持

SEARCH 常用示例

SEARCH 常用示例
a6 SEARCH UNSEEN                              # 未读
 a7 SEARCH FROM "boss@example.com" SINCE 1-Sep-2026
a8 SEARCH OR UNSEEN FLAGGED                   # 未读或已加星
a9 UID SEARCH HEADER Message-ID "<abc@example.com>"   # 按消息标识精确查找
a10 SEARCH NOT SEEN SMALLER 102400            # 已读且小于 100KB
UID SEARCH UID 200:*                          # 用 UID 限定范围

典型使用场景

  • 定期清理:按大小与日期挑出大附件旧邮件再统一归档
  • 自动化归档:按发件人或主题把通知类邮件移动到指定文件夹
  • 去重与排查:按消息标识精确查找某一封邮件
  • 批量标记:筛出未读的旧通知统一置为已读
  • 容量治理:结合大小条件定位占空间最多的一批邮件
SEARCH 本身不改变任何邮件状态,但后续如果是在读取正文时用了会置已读的写法,邮件就会被标记。自动化脚本一律应当使用不置已读的读取方式,避免「只是检查一下就变成已读」这种典型误伤。

易错点

  • 把服务端检索当成本地全文检索用:各家实现的分词与编码处理有差异,跨服务商脚本需要留兼容层
  • 条件之间默认是与关系却没意识到,OR 写成了并列导致结果为空
  • 脚本里读取正文时用了会置已读的方式,检查动作把用户的未读邮件全变成已读
  • 用消息序号做长期引用,一次整理后编号整体前移,后续操作全部打偏
  • 日期条件写成带时间的格式,服务器无法识别而返回错误

数据来源与参考

  • RFC 3501 §6.4.4(SEARCH)

相关工具

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