IMAP - разница между msgno и uid?

В чем разница между msgno и uid? Похоже, они всегда одинаковы, даже если сообщения удалены!?


person clarkk    schedule 04.11.2011    source источник


Ответы (2)


Как сказано на http://www.php.net/manual/en/function.imap-uid.php:

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

person mobius    schedule 04.11.2011
comment
Когда я удаляю msgs, uid меняется и всегда совпадает с msgno при получении данных с помощью imap_fetch_overview() - person clarkk; 04.11.2011
comment
Вы пытались удалить сообщение и повторно получить его в одном и том же сеансе? - person mobius; 04.11.2011

В моем случае uid всегда совпадает с msgno и message_id

Хуже всего то, что когда я удаляю сообщения на почтовом сервере, msgno и UID переатрибуются в порядке поступления.

Я сделал небольшой скрипт, который извлекает почту с помощью imap_search и imap_overview для получения заголовков, я использую imap_uid($this->GetConnection(),$msgno); чтобы принудительно получить UID из MSGNO, и вот результат:

echo "MSGNO: $msgno UID: $overview->uid UIDBYNO: ". $mbox->GetUidByNum($msgno)."
";

MSGNO: 851 UID: 851 UIDBYNO: 851 MSGNO: 852 UID: 852 UIDBYNO: 852 MSGNO: 853 UID: 853 UIDBYNO: 853 MSGNO: 854 UID: 854 UIDBYNO: 854 MSGNO: 855 UID: 5G: 855 UID 855 856 UIDBYNO: 856 MSGNO: 857 UID: 857 UIDBYNO: 857

Итак, 1) uid не уникален 2) msgno всегда совпадает с uid

Возможно, почтовый сервер не соблюдает RFC!

person Maypeur    schedule 25.01.2013
comment
Возможно, вам лучше проверить это без клиентской библиотеки, чтобы убедиться, что виноват сервер, а не клиентская библиотека. Подключитесь через Telnet к порту 143 сервера, затем произнесите логин maypeur foo (это логин и пароль), b выберите папку «Входящие» и c выберите 1:* uid. - person arnt; 31.03.2014
comment
Это не сработает, если вы используете php imap для подключения к серверу POP3, потому что POP3, по-видимому, не использует/поддерживает правильные UID. Это была моя проблема в любом случае - person user1666456; 20.03.2016
comment
попробуйте переместить электронные письма из одного почтового ящика в другой, тогда номера изменятся. :) - person Fadi Obaji; 22.05.2017