2016-05-11 2 views
1

В чем разница между этими двумя аспектами java-почты? Я вижу, что 2 значения не одинаковы для конкретного сообщения. Итак, что я должен считать уникальным идентификатором сообщения IMAP?В чем разница между IMAPMessage.getUID() и заголовком Message-ID?

Если мне нужно получить сообщение с сервера IMAP, соответствующего уникальному идентификатору, следует ли использовать?

MessageIDTerm 

или

IMAPFolder.getMessageByUID() 

ответ

3

UID это уникальный идентификационный номер из электронной почты в IMAP folder. Каждой почте в папке присваивается uid, вы можете указать индекс, поддерживаемый почтовой папкой. Принимая во внимание, что message-id является частью электронной почты header.

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

Другое главное различие в том,

  • UID является назначается сервером IMap
  • MESSAGEID являются установленным почтового клиента.

Так что всегда лучше полагаться на UID, чтобы извлечь электронное письмо.

См: RFC - UID

+2

Это также намного быстрее запросить UIDs: он является родным индекс сервера. Поиск заголовка Message-ID может перерасти в текстовый поиск всех электронных писем. – Max

+0

true @Max, если вы ищете заголовок Message-Id, он должен будет получить заголовки каждого электронного письма и выполнить поиск внутри него. Его проклятие медленное и может загрузить сервер, если у вас много писем в папке. –

+0

Сообщения UID в папке могут быть изменены, если почтовый сервер перезагружен, обновлен или в некоторых случаях. Чтобы обнаружить проблему, необходимо проверить UIDVALIDTY папок. Если вы переместите сообщение между папками, значения UID будут изменены, тогда как MessageID будет сохранен. – benchpresser