不,不可能
PHP 在底层使用 Mark Crispin 的 c-client 库来完成其 IMAP 工作。在 c-client 库中,mail.c 中有一个已弃用的方法 mail_criteria,它将 IMAP 搜索字符串转换为 c-client 搜索程序。mail_criteria 在过去 8 年左右已被弃用,因此从未更新以支持 IMAP4 搜索语法。因此,在 IMAP2 中不存在的 OR 等搜索词在 mail_criteria 函数中从未得到支持。以下是它支持的所有以“O”开头的术语:
case 'O': /* possible OLD, ON */
if (!strcmp (criterion+1,"LD")) f = pgm->old = T;
else if (!strcmp (criterion+1,"N"))
f = mail_criteria_date (&pgm->on,&r);
break;
OR 不在该列表中。因此,即使 c-client 在其 SEARCHPGM 结构中支持 OR,它也不会在已弃用的 mail_criteria 函数中解析 OR。
并且 PHP 仍然使用 mail_criteria 来解析搜索查询。在 2011 年。因此,在 c-client 库取消弃用 mail_criteria 并使其符合 IMAP4 或 PHP 编写自己的 IMAP 搜索解析器之前,您将无法使用任何 IMAP2 支持。其中不包括 OR。
imap_search 将无法使用多个条件