Как определить UID сообщения в IMAP

Я работаю в почтовом клиентском проекте, использующем C#. Я использую и POP и протокол протокола IMAP для общения с сервером. Проблема - чем я не могу выяснить, почему, когда я хочу получить UID для сообщения, результат сервера POP и сервера IMAP отличается.

POP
C: UIDL 1
S: +OK 1 UID2-1269789826

и

IMAP
C: $ FETCH 1 (UID)
S: * 1 FETCH (UID 2)
S: $ OK Fetch completed.

Почему результат для получения UID так отличается? В IMAP другая функция для этого? Любая справка приветствуется.Спасибо.

5
задан Emanuel 30 March 2010 в 07:41
поделиться

1 ответ

POP3 и IMAP - это два разных протокола. UID, используемые этими двумя протоколами, не связаны и не должны быть одинаковыми. Фактически, POP3 UID - это произвольная строка, а IMAP UID - это 32-битное число (передается как строка).

Теоретически можно написать почтовый сервер, поддерживающий как IMAP, так и POP3, и использовать один и тот же UID для обоих протоколов, но я не знаю ни одного сервера, который действительно мог бы это сделать. На практике вы должны рассматривать UID POP3 и IMAP как несвязанные значения.

RFC 1939 (POP3): Уникальный идентификатор сообщения - это произвольная определяемая сервером строка, состоящая из от 1 до 70 символов в диапазоне от 0x21 до 0x7E, что однозначно идентифицирует сообщение в почтовой папке, которое сохраняется во время сеанса.

RFC 3501 (IMAP): (Атрибут сообщения с уникальным идентификатором (UID)) 32-битное значение, присваиваемое каждому сообщению, которое при использовании со значением достоверности уникального идентификатора ( см. ниже) формирует 64-битное значение, которое НЕ ДОЛЖНО навсегда ссылаться на какое-либо другое сообщение в почтовом ящике или любом последующем почтовом ящике с тем же именем.

11
ответ дан 18 December 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: