Эффективно найти начальный UID каждой папки в IMAP - PullRequest
1 голос
/ 16 мая 2019
Команда

SELECT , EXAMINE и STATUS даст мне UIDNEXT значение каждого почтового ящика (папки). То, что я ищу, - это эффективный способ определить что-то вроде UIDFIRST , то есть начальный UID для каждого почтового ящика. Я понимаю, что нет прямой команды получить его.

Я могу получить все UID для папки, используя UID SEARCH ALL как , приведенное здесь

P.S. Результат не гарантируется в порядке возрастания, как указано в RFC.

В результате я получу все UID, доступные в этом конкретном выбранном почтовом ящике, и я смог бы отсортировать их и получить наименьший UID из списка UID.

Рассмотрим почтовый ящик с почти миллионами писем . Это будет неэффективно для сетевого вызова, а также для разбора результата в список чисел и их сортировки.

Есть ли какая-нибудь другая работа, которая может быть эффективной для получения первого UID каждого почтового ящика?

1 Ответ

2 голосов
/ 16 мая 2019

Командой, которую вы хотите, является a fetch 1 uid, она всегда будет возвращать самый низкий UID, кроме случаев, когда почтовый ящик пуст. Такого же эффекта можно добиться с помощью a uid search 1, т.е. найдите сообщение с MSN 1 и верните его UID, если почтовый ящик не пустой, или пустой результат, если почтовый ящик пуст. Используйте то, что подходит вам по вкусу.

1 является самым низким, потому что UID должны быть в порядке возрастания, см. 3501 стр. 9 . Я не думаю, что команда поиска необходима для возврата сообщений в каком-либо определенном порядке, но MSN и UID должны обязательно подниматься вместе.

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