PHP imap_search过滤X优先级标头

时间:2018-05-07 14:00:21

标签: php imap email-headers

目前我正在编写一个脚本,用于将电子邮件从文件夹移动到其他文件夹。应移动包含X-Priority: 3标题的所有邮件。

邮件来源的一部分:

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标头的电子邮件。我首先想到我可以查看imap_fetch_overviewimap_fetchtextimap_fetchbody但不包含X-Priority。但是,X-Priority不是有效的imap_search条件。

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

1 个答案:

答案 0 :(得分:0)

好的,在发布之前我应该​​看起来更好但是我会发布我的发现:

我发现我可以使用imap_fetchheader获取标题,其中还包含X-Priority标题(duh ...)

所以检索它的代码是:

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

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

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

这似乎只包含所有包含X-Priority标题的电子邮件。