Почему эти два результата поиска IMAP отличаются друг от друга? - PullRequest
0 голосов
/ 01 мая 2020

Я использую imaplib и пытаюсь получить письма с определенным значением заголовка темы.

Мой код:

    res, tmp = self.mail.uid('search', None, 'HEADER Subject "SUBJECT_HERE"')
    print(tmp)
    print(res)

    print("test 2 goes:")
    rr, tt = self.mail.search(None, 'HEADER Subject "SUBJECT_HERE"')
    print(tt)
    print(rr)

Результат:

[b'225 232 323 324 346 366 382 419 420 425 450 463 517 607 670 751 833 911 1043 1129 1133 1134 1287 1350 1799 1854 1957 1960 1962 1991 2005 2040 2071 2110 2119 2121 2153 2158 2182 2188 2189 2228 2230 2239 2249 2334 2335 2372 2378 2396 2435 2497 2567 2568 2573 2574 2575 2632 2633 2634 2648 2649 2709 2785 2819 2821 2828 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2829 2868 2885 2895 2902 2906 2920 2993 2997 2998 3000 3001 3009 '] OK тест 2 идет:
[b'220 227 318 319 340 360 376 413 414 419 444 457 511 601 664 745 827 905 1037 1123 1127 1128 1281 1344 1793 1848 1951 г. 1954 г. 1956 г. 1985 г. 1999 г. 2034 2065 2104 2113 2115 2147 2152 2176 2182 2183 2222 2224 2233 2243 2328 2329 2366 2372 2390 2429 2491 2561 2562 2567 2568 2568 2625 2626 2627 2641 2642 2702 2778 2812 2814 2821 2822 2861 2878 2888 2886 2813 2913 2986 2986 2813 2913 2913 2913 2913 2913 2913 - 293 2990 2991 2993 2994 3002 '] ОК

Я думал, что эти две команды дают одинаковые результаты.

Но, как показано выше, эти два получают разные электронные письма.

В чем разница ??

1 Ответ

2 голосов
/ 01 мая 2020

Один (SEARCH) возвращает порядковые номера сообщений (MSN), которые пронумерованы от 1 до N и изменяются по мере добавления и удаления сообщений. Сообщение с номером 5 теперь может быть номером 4 завтра, если вы удалите сообщение перед ним.

Другой (UID SEARCH) возвращает UID, которые не изменяются при удалении сообщений. Это два совершенно разных набора идентификаторов. Сообщение с UID 5 будет оставаться UID 5 до тех пор, пока оно не будет удалено (или перемещено и т. Д. c.).

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

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