2013-09-03 4 views
1

У нас есть приложение java, созданное сторонним разработчиком, которое открывает соединения IMAP для чтения и записи и получает определенные сообщения. Однако он также отмечает их как «прочитанных». Я предполагаю, что это связано с тем, что приложение открывает соединение для чтения/записи. Есть ли способ, которым мы можем помешать этому приложению обновить флаг «read (seen)» imap? Может быть, параметр, который мы можем установить при открытии соединения с IMAP?Ведение информации состояния сообщения IMAP (флаги imap) при использовании Javamail

+2

Вы должны убедиться, что он использует body.peek, а не тело, когда FETCHING сообщения. Использование EXAMINE вместо SELECT также должно открывать почтовый ящик только для чтения. – Max

ответ

2

Open Папка read-only вместо чтения/записи.

+0

нам нужно открыть папку для чтения/записи, потому что мы установили некоторые пользовательские флаги пользователя в IMAP. –

+2

А, ну, ты не сказал этого! :-) После извлечения объектов Message, передайте их в com.sun.mail.imap.IMAPMessage и используйте [setPeek] (https://javamail.java.net/nonav/docs/api/com/sun/mail/ imap/IMAPMessage.html # setPeek (boolean)) метод. –

+0

для меня это не работает - установлен флажок увиденного, хотя моя папка открыта READ_ONLY – mithrandir

-1

Вы можете сделать это для одного сообщения:

folder.setFlags(new Message[] {message}, new Flags(Flags.Flag.SEEN), false); 

или для списка сообщений:

folder.setFlags(messageList, new Flags(Flags.Flag.SEEN), false); 

где false обозначает непрочитанное.

+0

Он не хочет отмечать сообщение непрочитанным. Он хочет, чтобы сообщение не было отмечено в первую очередь, когда оно загружается. – Max