Нужен способ поиска почты по идентификатору сообщения с помощью imap - PullRequest
0 голосов
/ 28 августа 2009

Я использую Java Mail api для доступа к учетной записи gmail (не исправлено). Мне нужно искать все письма для данного идентификатора почты (). Поиск должен быть прекращен при первом появлении сообщения с указанным идентификатором. (Оптимизация: должно существовать только одно письмо с заданным идентификатором)

Я бы, конечно, хотел бы пропустить папку "Вся почта".

Самый простой способ сделать это:

  1. Получить папку по умолчанию
  2. Получить все папки по умолчанию.
    1. Поиск с использованием MessageIDTerm в текущей папке
    2. если сообщение не найдено, повторите шаг 2 для подпапок
    3. иначе верните найденную папку.

Это вызывает много ненужных обращений к серверу, которые не нужны, есть ли у кого-нибудь более оптимальный подход?

Ответы [ 2 ]

2 голосов
/ 28 августа 2009

Прошло много лет с тех пор, как я все испортил, но вы должны быть в состоянии:

  • Используйте команду IMAP4 UID, которая ищет заданный идентификатор (или диапазон идентификаторов). Ссылка RFC3501 , раздел 6.4.8
  • Используйте это с doCommand() на объекте IMAPFolder, и, при необходимости, повторно просматриваете ваши папки.
0 голосов
/ 07 сентября 2009
folder.list("*");

Этот метод возвращает рекурсивно весь список папок. Так что мне бы пришлось запустить всего 1 цикл для папок !! И, конечно, один цикл для каждого сообщения, найденного в поиске.

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