【问题标题】:PHP imap_search INBOX/SENT ITEMSPHP imap_search 收件箱/已发送项目
【发布时间】:2012-08-31 23:44:39
【问题描述】:

我需要使用某些条件同时搜索 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 吗?

提前致谢。

【问题讨论】:

    标签: php codeigniter email imap


    【解决方案1】:

    不,不可能

    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 客户端在其 SEARCHPGM 结构中支持 OR,它也不会在已弃用的 mail_criteria 函数中解析 OR。

    而且 PHP 仍然使用 mail_criteria 来解析搜索查询。在 2011 年。因此,在 c-client 库取消弃用 mail_criteria 并使其符合 IMAP4 或 PHP 编写自己的 IMAP 搜索解析器之前,您将无法使用任何 IMAP2 支持。其中不包括 OR。

    imap_search 不能使用多个条件

    【讨论】:

    • 使用循环。搜索它们并将结果放入数组中
    • 为什么要全部放在查询中,在收件箱中播种结果并将其他文件夹的链接放在结果中。当用户点击 Outfox 等文件夹时,触发查询并显示结果:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    相关资源
    最近更新 更多