PHP фильтр imap_search X-приоритетный заголовок - PullRequest
0 голосов
/ 07 мая 2018

В настоящее время я пишу скрипт для перемещения писем из папки в другую папку. Все письма, содержащие заголовок 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_overview, imap_fetchtext или imap_fetchbody, но ни один не содержит X-Priority. Однако X-Priority не является действительным imap_search критерием.

Как я могу отфильтровать почтовый ящик и получать только письма с заголовком X-Priority?

1 Ответ

0 голосов
/ 07 мая 2018

Хорошо, я должен был выглядеть лучше перед публикацией, но я все равно опубликую свои выводы:

Я обнаружил, что могу получить заголовки с 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...