你记得那封邮件:客户那边的人在春天发来,附件是签好的工作范围说明。但它究竟进了哪个邮箱?个人邮箱、共享的 projects@,还是仍然连接着的旧地址?
于是你在三个地方分别搜索,每次稍微改一下查询。最后,似乎还不如请客户再发一遍。
问题不在于忘了文件夹。很多客户端默认把邮件搜索限制在当前打开的文件夹。要找一封旧邮件,这个范围往往太窄。下面介绍该选哪些搜索范围、跨账户搜索如何工作,以及怎样用操作符把模糊记忆变成一条明确的查询。
为什么只搜当前文件夹不够
当邮箱还是一个大文件、搜索需要从硬盘完整读取时,只搜索某个文件夹有实际意义。缩小范围可能明显减少等待时间。
如今,索引和服务器能力发挥着重要作用,但很多客户端仍保留了旧的默认行为。你搜不到,就以为邮件不存在。实际上,你打开的是收件箱,而邮件八个月前已经归档。如果搜索悄悄排除了大部分邮件,空结果并不能证明那封邮件已经消失。
另一个问题不太显眼。你按层级整理邮件,Clients/Acme/Invoices 位于 Clients 下。如果客户端只搜索 Clients 本身,就不会找到下一层或下两层的邮件。选中的文件夹可能只是一个容器。
单个邮箱中的三种搜索范围
一个邮箱内有三种实用范围。中间一种尤其适合维护文件夹树的人,不过并非所有客户端都支持。
| 范围 | 搜索位置 | 适用情况 |
|---|---|---|
| 当前文件夹 | 仅搜索选中的文件夹 | 知道邮件位置,希望缩小常见词的搜索范围 |
| 当前文件夹及子文件夹 | 当前文件夹及其所有下级文件夹 | 需要查看 Clients/Acme 下的整个目录树 |
| 所有文件夹 | 邮箱中所有可访问的文件夹,包括归档、已发送和垃圾箱 | 不记得邮件存在哪里 |
如果不包含子文件夹,目录树就无法帮助你找齐一个项目的往来邮件。已发送文件夹也很重要:讨论合同的那封关键邮件,完全可能是你写的。
搜索所有账户
上述范围仍然局限于一个邮箱。但很多人还有团队共享邮箱,以及其他服务商的已连接账户。
跨账户搜索会对每个可访问的来源执行同一查询,再把结果按从新到旧合并,并标注来源邮箱。这里可以搜索各邮箱的收件箱,也可以搜索每个邮箱中的所有文件夹。前者适合处理新邮件,后者适合在不知道存放位置时找东西。
查询针对的是原始邮箱,不是事先收集的副本。共享邮箱在其所在服务器上搜索,已连接的 Gmail 账户会收到 IMAP SEARCH 命令。无需预先同步本地副本,但新邮件是否可见取决于服务器和索引。三十秒前刚到的邮件并不一定立即出现在结果里。
搜索是如何执行的
合并十来台独立 IMAP 服务器的结果,比看起来复杂。这些难点解释了搜索功能的设计。
查询会转成服务端条件。搜索文本经过解析,再以 IMAP SEARCH 命令发送给各服务器。服务器执行搜索,返回匹配邮件的标识符。无需下载整个邮箱,再在手机上筛选内容;对于 40 GB 的邮箱,这一点尤其有用。
索引有助于搜索正文。服务器可以直接扫描邮件内容,但大型邮箱可能耗时很长,甚至超时。全文索引可以加快搜索,却不保证某个固定响应时间。已连接账户取决于服务商的实现:Gmail 和 Fastmail 使用各自的搜索系统,小型自建服务器则可能没有索引。
各来源并行查询。依次搜索十个邮箱会累积十次等待。查询会同时发出,结果收到后再合并。
响应慢的来源有超时限制。某个服务商未及时响应时,系统会跳过它并明确提示。你可能先看到九个来源的结果,以及关于第十个来源的提醒,而不是无限等待。不过列表是不完整的,应当重新搜索被跳过的账户。
结果按接收时间合并。各服务器只知道自己的匹配结果,因此共同列表使用邮件的内部日期。此实现没有跨服务器的统一相关性评分。内部日期可能与邮件头中的日期不同,导入后尤其如此。
搜索操作符
不带操作符的词会在发件人、主题和正文中搜索。操作符用来缩小范围,也可以组合;每增加一个条件,就与其他条件通过 AND 连接。
| 操作符 | 检查内容 | 示例 |
|---|---|---|
from: | 发件地址或显示名称 | from:anna@acme.com |
to: | 收件地址 | to:billing@ |
subject: | 仅检查主题 | subject:invoice |
has:attachment | 带有附件文件的邮件 | has:attachment |
is:unread | 未读邮件 | is:unread |
is:starred | 已加星标或标记的邮件 | is:starred |
after: | 指定日期当天及之后,格式为 YYYY-MM-DD | after:2026-04-01 |
before: | 指定日期之前,格式为 YYYY-MM-DD | before:2026-07-01 |
larger: | 大小超过指定值 | larger:10M |
smaller: | 大小低于指定值 | smaller:200K |
有两个细节需要记住。多个词组成的值要加引号:subject:"quarterly report" 在主题中搜索短语,而 subject:quarterly report 在主题中搜索 quarterly,并在整封邮件中搜索 report。具体匹配方式也取决于服务器。这里,大小操作符中不带单位的数字表示兆字节:larger:5 相当于 5 MB。旧的解释使用千字节,5 KB 的门槛会放过太多邮件,让人误以为筛选没有效果。
如果不想记语法,搜索栏旁的筛选图标可以打开表单,填写相同条件。
实用邮件查询示例
确定收到过的附件。
from:acme has:attachment after:2026-03-01 before:2026-06-01
发件人、附件和春季时间段。对所有账户和文件夹执行查询,可以缩小结果列表,但目标邮件的位置取决于匹配数量。
哪些邮件占用了配额。
larger:20M
列出所有文件夹中的大邮件,最新的排在前面。这有助于了解空间用量。删除前先保存必要附件;释放配额可能还需要清空垃圾箱,或在服务器上永久删除。
曾经答应客户的事。
to:client@example.com after:2026-06-01
搜索所有邮箱的已发送邮件,可以还原你这一方的对话,包括从共享邮箱发出的回复,前提是它们已保存在那里且你有权访问。
未读,而不只是没有在这里打开。
is:unread after:2026-07-01
跨邮箱查询会找出服务器标记为未读的邮件。这是有用的参考,但未读标记本身不能证明邮件尚未处理。
只记得一部分的讨论。
subject:"statement of work" larger:100K
主题短语和最小大小可以缩小搜索范围。但邮件较大并不证明包含目标附件,找到后仍要检查文件。
服务端搜索与本地搜索
有些桌面客户端搜索本地副本。这可能很快,但存在三种限制。其他客户端也能向服务器发起搜索。
本地搜索只能看到已下载的数据。缓存可能只保留最近几个月,或只保留旧邮件的邮件头,因此空列表可能源于数据不完整。手机缓存可能更小。没有在该设备上配置的邮箱,也不会加入本地搜索。
服务端搜索不受设备缓存限制,而是在邮件存放处执行查询。不过,覆盖范围仍取决于所选范围、可访问文件夹、权限和索引。条件相同时,各设备查询相同来源,但邮件变化和临时故障仍可能改变结果。
限制与差异
外部账户的搜索质量取决于服务商。各远程服务器收到 IMAP SEARCH 后自行决定返回结果。Gmail 的分词和部分词匹配可能与 TrekMail 不同。
不会搜索附件内容。has:attachment 查找带文件的邮件。这项搜索不索引 PDF 内部文本,需要另行使用文档搜索。
结果按时间排列,不按相关性排名。服务器之间没有共享评分。应当用操作符缩小范围,而不是指望目标邮件自动排到最上面。
来源数量有限制。合并列表最多同时涵盖 25 个邮箱。再多时,搜索特定邮箱更实用。响应时间取决于服务器和查询。
垃圾箱也包含在内。只要邮件尚未永久删除,就有机会找到最近删掉的邮件。每条结果的文件夹标记会指出它在哪里。
常见问题
搜索包含共享邮箱吗?
包含。可访问的共享邮箱会与个人邮箱一同查询,结果会标明来源。没有读取权限的邮箱和文件夹不包含在内。
能搜索已连接的外部账户吗?
能。已连接账户通过 IMAP 查询,其结果带着服务商标记出现在同一列表中。需要有效的连接凭据和文件夹访问权限。
搜索时会把我的邮件发到别处吗?
查询转换为 IMAP SEARCH,由已经保存邮件的服务器执行。邮件内容不会复制到第三方搜索索引。但这不排除传输客户端显示结果所需的数据。
为什么网页比桌面客户端找到的结果更多?
一种可能是客户端搜索不完整的本地缓存,而网页向服务器查询。也应比较搜索范围、可访问文件夹和索引。并非所有桌面客户端都只能本地搜索。
可以不输入操作符,直接按日期搜索吗?
可以。搜索栏旁的筛选面板有日期、发件人和收件人字段,以及未读、星标、附件等条件。它会生成同样的查询。
为什么结果按日期而不是匹配程度排序?
结果来自独立服务器,没有统一的相关性评分。此实现按内部日期合并。使用操作符可以进一步缩小列表。
搜索包含垃圾邮件文件夹吗?
“所有文件夹”范围包含可访问的垃圾邮件文件夹。如果过滤器误把邮件放在那里,搜索可以帮助确认。找到后,可以了解邮件为什么进入垃圾邮件夹。