Я работаю в почтовом клиентском проекте, использующем 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 другая функция для этого? Любая справка приветствуется.Спасибо.
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-битное значение, которое НЕ ДОЛЖНО навсегда ссылаться на какое-либо другое сообщение в почтовом ящике или любом последующем почтовом ящике с тем же именем.