PHP imap_search 过滤器 X-priority header

PHP imap_search filter X-priority header

目前我正在编写一个脚本来将电子邮件从一个文件夹移动到另一个文件夹。应移动所有包含 X-Priority: 3 header 的邮件。

部分邮件来源:

Date: DATE
To: NAME <EMAIL>
From: "NAME" <EMAIL>
Subject: SUBJECT
Message-ID: <SOMEID@EMAIL>
X-Priority: 3

我使用的代码:

$imapStream = imap_open('{HOST}Sent', 'EMAIL', 'PASSWORD');
$emailIds = imap_search($imapStream, 'ALL');
rsort($emailIds);

foreach ($emailIds as $emailId) {
    $overview = imap_fetch_overview($imapStream, $emailId, 0);
    $message = imap_fetchtext($imapStream, $emailId, 2);

    var_dump($overview); // <-- Doesn't contain X-Priority
    die;
}

现在,我需要过滤所有设置了 X-Priority header 的电子邮件。我首先想到我可以检查 imap_fetch_overviewimap_fetchtextimap_fetchbody,但 none 包含 X-Priority。但是,X-Priority 不是有效的 imap_search 条件。

如何过滤邮箱并仅获取带有 X-Priority header 的电子邮件?

好吧,我应该在 posting 之前看起来更好,但无论如何我都会 post 我的发现:

我发现我可以用 imap_fetchheader 得到 headers,其中还包含 X-Priority header(呃...)

所以检索它的代码是:

$headers = explode("\n", imap_fetchheader($imapStream, $emailId, 0));

在过滤的情况下,我可以使用 TEXT 作为条件来过滤具有特定 X-Priority 的电子邮件,如下所示:

$emailIds = imap_search($imapStream, 'TEXT "X-Priority: 3"');

这似乎只获取包含 X-Priority header 的所有电子邮件。