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 本身不改变任何邮件状态,但后续如果是在读取正文时用了会置已读的写法,邮件就会被标记。自动化脚本一律应当使用不置已读的读取方式,避免「只是检查一下就变成已读」这种典型误伤。