PHP imap поиск ВХОДЯЩИХ/ОТПРАВЛЕННЫХ СООБЩЕНИЙ


Мне нужно выполнить поиск как Inbox, так и Sent Items по некоторым критериям.

Предположим, что идентификатор электронной почты, который мне нужно отфильтровать, является [email protected]

  1. Поиск в INBOX - FROM,CC поле
  2. Поиск в Sent Items - To поле

    $результат= imap_search($conn, 'Из"[email protected] "Для"[email protected] "');

Я пытался imap_search, но это не работает с несколькими критериями.

Также возможно ли искать как INBOX, так и Sent Items ?

Заранее благодарю.

Author: Red, 2012-09-07

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 не будет работать с несколькими критериями

 2
Author: shail, 2012-09-07 05:34:27