Определение UID сообщения, добавленного в почтовый ящик через IMAP - PullRequest
7 голосов
/ 16 января 2010

Как определить UID сообщения, которое добавляется через APPEND в почтовый ящик? Через STATUS я могу заранее получить прогноз следующего значения, а потом могу SEARCH, но, опираясь на них, возникает условие гонки, поскольку между этими командами могли быть добавлены другие сообщения.

1 Ответ

6 голосов
/ 16 января 2010

Если ваш IMAP-сервер поддерживает UIDPLUS, вы всегда получите ответ APPENDUID. Он будет содержать UID и срок действия UID.

Пример синтаксиса из RFC 4315 :

S: A003 OK [APPENDUID 38505 3955] APPEND completed

Если ваш почтовый сервер не поддерживает UIDPLUS, вам нужно будет сделать FETCH для UID, как только ваша операция добавления будет завершена. Если вы уверены, что после добавления не было добавлено ни одного сообщения, найдите последнее сообщение в ответе FETCH.

FETCH 1:* (UID)

Если вас беспокоит добавление других сообщений, вы можете сохранить заголовок IMAP, такой как Message-ID, до APPEND, а затем использовать его в операции FETCH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...