2013-08-29 3 views
0

Мы должны разработать хранилище сообщений с использованием интерфейса IMAP, который должен обладать функциональностью постоянных UID, чтобы позднее эти сообщения могли быть синхронизированы на нескольких устройствах (например, на мобильных устройствах, ПК, ноутбуках), и устройство может удалять/копировать сообщения. RFC 3501 упоминает, что UID уникальны в рамках сессии.Стойкие UID для почтового ящика

Так что я задал вопрос: содержит ли какой-либо протокол IMAP RFC о постоянном UID для почтового ящика?

+0

Что случилось с IMAP? Вероятно, вам захочется быть совместимым с ним. – 84104

ответ

2

Каждому сообщению IMAP присваивается идентификатор UID, который является специфическим для пользователя , так как у двух пользователей могут быть два разных сообщения, но им назначается одинаковый UID. [aka UID! = UUID] Если ваше программное обеспечение выдает простой FETCH 1:* (FLAGS), сервер будет отвечать порядковым номером , не учитывая UID сообщения. Любая команда, в которой вы хотите работать с UID сообщения, должна быть уверена, что вы ее правильно выдаете, как в FETCH UID 1:* (FLAGS).

например:

a1 fetch 1:* (flags) 
* 1 FETCH (FLAGS (\Seen)) 
* 2 FETCH (FLAGS (\Seen)) 
* 3 FETCH (FLAGS (\Seen)) 
* 4 FETCH (FLAGS (\Seen)) 
* 5 FETCH (FLAGS (\Answered \Seen)) 
* 6 FETCH (FLAGS (\Seen)) 
* 7 FETCH (FLAGS (\Seen)) 
* 8 FETCH (FLAGS (\Seen)) 
* 9 FETCH (FLAGS (\Seen)) 
* 10 FETCH (FLAGS (\Seen)) 

против:

a8 uid fetch 1:* (flags) 
* 1 FETCH (UID 1 FLAGS (\Seen)) 
* 2 FETCH (UID 2 FLAGS (\Seen)) 
* 3 FETCH (UID 3 FLAGS (\Seen)) 
* 4 FETCH (UID 4 FLAGS (\Seen)) 
* 5 FETCH (UID 5 FLAGS (\Answered \Seen)) 
* 6 FETCH (UID 6 FLAGS (\Seen)) 
* 7 FETCH (UID 8 FLAGS (\Seen)) 
* 8 FETCH (UID 9 FLAGS (\Seen)) 
* 9 FETCH (UID 10 FLAGS (\Seen)) 
* 10 FETCH (UID 11 FLAGS (\Seen)) 

То есть, я не понимаю, почему вы должны отслеживать UIDs отдельно для синхронизации между несколькими устройствами. Пока каждое устройство собирает свою информацию с сервера IMAP, они будут синхронизироваться по умолчанию. Вы по существу перепрофилируете функциональность, которая уже существует на любом сервере IMAP.

+0

Возможно, более уместно в качестве отдельного вопроса, но imap uid (могут быть просто) простые целые числа? Должен признаться, я ожидал, что они будут больше похожи на uuid и как я прочитал imap RFC, казалось, что они будут похожи на UUID, но я не думаю? – David

+0

В RFC3501 есть «Уникальный идентификатор (UID)», а также «Номер последовательности сообщений». Таким образом, порядковый номер находится в каждом почтовом ящике 1,2,3,4 ..., а UID уникален в системе. Оба являются целыми, но не UUID. UUID содержит A-F0-9 и '-'. – TheFox

1

Что RFC3501 мандаты состоит в том, что UID должны оставаться постоянными в течение сеанса. Это не означает, что они не должны быть перекрестными в течение сеансов - наоборот, если они не являются постоянными, клиентам IMAP придется загружать их все время.

Я предлагаю несколько раз перечитать соответствующие фрагменты RFC3501 - это важная часть синхронизации почтового ящика IMAP, и важно получить это право - включая отношения с UIDVALIDITY и UIDNEXT, так как а также расширения CONDSTORE и QRESYNC.

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

 Смежные вопросы

  • Нет связанных вопросов^_^