Используя API JavaMail и IMAP, я хочу узнать, что сообщение было перемещено из папки a в b. как я могу это сделать без добавления слушателей? Я хочу, чтобы я обнаружил изменения в сообщениях, когда я вхожу в учетную запись и открываю папку.Рассылка с помощью IMAP: как определить, что сообщение было перемещено из одной папки в другую?
Проблема заключается в том, что у вас есть 3 сообщения в папке a с идентификаторами 1 2 и 3, и вы перемещаете сообщение с идентификатором 3 в папку B, идентификатор сообщения изменяется, и у нас есть сообщение с идентификатором 1 в папке B.
Моя цель - синхронизировать структуру сообщений в почтовом сервере с моим собственным локальным сервером. Я должен хранить всю информацию о сообщениях, флаги и т. Д. Самостоятельно. Поэтому при каждом входе в систему я должен обнаружить все изменения, внесенные в сообщения, хранящиеся на почтовом сервере.
я могу получить новые или непрочитанные письма по:
Message messages[] = inbox.search(new FlagTerm(new Flags(Flag.RECENT), true));
или
Message messages[] = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false));
, но я не заинтересован только новых писем, я также хотел бы знать изменения, внесенные в старый mail, например, я хочу получить информацию об этом:
почта, которая была прочитана 2 месяца назад, была перемещена в другую папку.
моя идея,
потому что UIDs изменить, я не могу использовать это для идентификации сообщений. Я думаю, что мне нужно использовать информацию о почте, такую как дата получения отправителя субъекта, построить хэш-значение из них и сравнить хэш-значения сообщений при каждом входе в систему. но это вызовет проблемы с производительностью.
был готов ответить именно на это. Идентификатор сообщения - это точно подходящее поле для использования ... конечно, нужно учитывать, что письма * копируются * в несколько папок, а не во всех сообщениях есть идентификаторы сообщений (черновики ...?) – rolfl
Не все сообщения имеют заголовок '' Message-Id'', и этот заголовок, к сожалению, не гарантированно является уникальным. Когда дело доходит до интернет-протоколов и RFC, вы не можете полагаться на формулировку '' SHOULD''. –
но эта страница говорит: http://stackoverflow.com/questions/219343/get-uid-for-message-from-gmail-using-javax-mail-with-imap?rq=1 Идентификатор сообщения является уникален в большинстве, но не во всех случаях.Особенно автоматические отправители часто генерируют один и тот же идентификатор, или у вас его нет (я также видел пустые сообщения - Message-ID:) – benchpresser