У нас есть приложение java, созданное сторонним разработчиком, которое открывает соединения IMAP для чтения и записи и получает определенные сообщения. Однако он также отмечает их как «прочитанных». Я предполагаю, что это связано с тем, что приложение открывает соединение для чтения/записи. Есть ли способ, которым мы можем помешать этому приложению обновить флаг «read (seen)» imap? Может быть, параметр, который мы можем установить при открытии соединения с IMAP?Ведение информации состояния сообщения IMAP (флаги imap) при использовании Javamail
ответ
нам нужно открыть папку для чтения/записи, потому что мы установили некоторые пользовательские флаги пользователя в IMAP. –
А, ну, ты не сказал этого! :-) После извлечения объектов Message, передайте их в com.sun.mail.imap.IMAPMessage и используйте [setPeek] (https://javamail.java.net/nonav/docs/api/com/sun/mail/ imap/IMAPMessage.html # setPeek (boolean)) метод. –
для меня это не работает - установлен флажок увиденного, хотя моя папка открыта READ_ONLY – mithrandir
Вы можете сделать это для одного сообщения:
folder.setFlags(new Message[] {message}, new Flags(Flags.Flag.SEEN), false);
или для списка сообщений:
folder.setFlags(messageList, new Flags(Flags.Flag.SEEN), false);
где false
обозначает непрочитанное.
Он не хочет отмечать сообщение непрочитанным. Он хочет, чтобы сообщение не было отмечено в первую очередь, когда оно загружается. – Max
Вы должны убедиться, что он использует body.peek, а не тело, когда FETCHING сообщения. Использование EXAMINE вместо SELECT также должно открывать почтовый ящик только для чтения. – Max