PHP imap поиск ВХОДЯЩИХ/ОТПРАВЛЕННЫХ СООБЩЕНИЙ
Мне нужно выполнить поиск как Inbox
, так и Sent Items
по некоторым критериям.
Предположим, что идентификатор электронной почты, который мне нужно отфильтровать, является [email protected]
- Поиск в
INBOX
-FROM
,CC
поле -
Поиск в
Sent Items
-To
поле$результат= imap_search($conn, 'Из"[email protected] "Для"[email protected] "');
Я пытался imap_search
, но это не работает с несколькими критериями.
Также возможно ли искать как INBOX
, так и Sent Items
?
Заранее благодарю.
1 answers
Нет, Это невозможно
PHP использует c-клиентскую библиотеку Марка Криспина под капотом для выполнения своей работы с IMAP. В библиотеке c-клиента есть устаревший метод mail_criteria в mail.c, который преобразует строку поиска IMAP в программу поиска c-клиента. mail_criteria устарела в течение последних 8 лет или около того и, как таковая, никогда не обновлялась для поддержки синтаксиса поиска IMAP4. Таким образом, такие поисковые запросы, как ИЛИ которые отсутствовали в IMAP2, никогда не получали поддержки в функции mail_criteria. Вот все термины, которые он поддерживает, начинающиеся с буквы "О":
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;
ИЛИ его нет в этом списке. Таким образом, несмотря на то, что c-клиент поддерживает ИЛИ в своих структурах SEARCHPGM, он не анализирует ИЛИ в устаревшей функции mail_criteria.
И PHP по-прежнему использует mail_criteria для анализа поисковых запросов. В 2011 году. Поэтому до тех пор, пока библиотека c-клиента не отменит mail_criteria и не сделает ее совместимой с IMAP4, или PHP не напишет свой собственный анализатор поиска IMAP, вы застряли с любым поддерживаемым IMAP2. Что не делает включить ИЛИ.
Imap_search не будет работать с несколькими критериями