2

我需要同时搜索InboxSent Items使用一些标准。

假设我需要过滤的电子邮件 ID 是user@example.com

  1. INBOX- FROM,CC字段中搜索
  2. 搜索领域Sent Items_To

    $result= imap_search($conn, '从 "user@example.com" 到 "user@example.com"');

我尝试过imap_search,但它不适用于多个标准。

也可以同时搜索INBOXSent Items吗?

提前致谢。

4

1 回答 1

2

不,不可能

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 将无法使用多个条件

于 2012-09-07T05:34:27.940 回答