В чем разница между msgno и uid? Похоже, они всегда одинаковы, даже если сообщения удалены!?
IMAP - разница между msgno и uid?
Ответы (2)
Как сказано на http://www.php.net/manual/en/function.imap-uid.php:
Эта функция возвращает UID для заданного порядкового номера сообщения. UID — это уникальный идентификатор, который не меняется со временем, а порядковый номер сообщения может меняться при изменении содержимого почтового ящика.
imap_fetch_overview()
- person clarkk; 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!