2015-03-12 2 views
0

Я использую javax.mail для чтения сообщений из папки «Входящие» с использованием протокола «imaps». Я использую приведенный ниже фрагмент кода:Прочтите последнее и невидимое сообщение с помощью javax.mail

Session session = Session.getDefaultInstance(props, null); 
    Store store = session.getStore("imaps"); 
    store.connect(); 
    store.getFolder("inbox"); 
    inbox.open(Folder.READ_WRITE); 
    FlagTerm unseenFlagTerm = new FlagTerm(new Flags(Flags.Flag.SEEN), false); 
    FlagTerm recentFlagTerm = new FlagTerm(new Flags(Flags.Flag.RECENT), true); 

Но я не получаю никаких сообщений. Мне нужно последнее сообщение, которое еще не читается/не видно. Пожалуйста, предложите лучшее решение? Я до сих пор не уверен, что «новые флаги (Flags.Flag.RECENT) устанавливают TRUE или FALSE» do?

ответ

0

Вы не указали весь свой код. Предположительно, вы используете эти два FlagTerms в AndTerm, которые вы переходите к методу поиска.

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

Возможно, вам повезло, просто проигнорировав флаг «ПОСЛЕДНИЕ», и только для того, чтобы флаг SEEN не был установлен.

Вам также необходимо решить, означает ли «самое последнее» «последнее сообщение» или «последнее послание». Первое легко; это просто последнее сообщение в возвращаемом массиве. Последнее потребует от вас сортировки возвращаемых сообщений по дате отправки.

Смежные вопросы