Я не знаю, что вы имеете в виду, когда говорите, что UID не являются уникальными в почтовом ящике, только в подпапках. Под подпапками вы имеете в виду что-то кроме INBOX? В любом случае это звучит неправильно. Фактически UID уникальны в каждой папке, и не имеет значения, это INBOX или любая другая папка.
Что может случиться, что UIDs может измениться в период между сессиями. Обычно это происходит, если сервер IMAP теряет свои индексы и должен их перестраивать, или если почта переносится с одного сервера IMAP на другой и т. Д. ... Если это произойдет, вы, конечно, потеряете все связи между электронными письмами и дополнительными данными. (заметки или контакты).
Вы можете положиться на это: UID никогда не будет внезапно ссылаться на другое сообщение. Либо он останется действительным и ссылается на то же сообщение, на которое всегда ссылался, либо он станет недействительным.
Возможно, вы захотите проверить, как ваш конкретный сервер IMAP генерирует и поддерживает UID. Разные IMAP-серверы дают разные обещания о постоянстве значений UID. Даже в пределах одного сервера IMAP он может различаться в зависимости от используемого формата почтового ящика. Например, с Dovecot, ожидайте менее хрупкие UID с mdbox, чем с mbox или Maildir, потому что метаданные более тесно интегрированы с реальными электронными письмами с mdbox.
Я предлагаю использовать UID для ссылки на сообщения на сервере IMAP, Message-ID
в качестве резервной копии. Message-ID
не так хорош, потому что возможны дубликаты и (для большинства серверов IMAP) поиск Message-ID
может быть медленнее, но это лучше, чем полная потеря сообщений.