Я играю с реализацией java по умолчанию pop3 и не могу заставить ее прочитать фактическое состояние флагов (я думаю).
Вот (сокращенно) код:
Store store = null;
Folder folder = null;
try
{
Session mailSession = Session.getInstance(new Properties(), null);
store = mailSession.getStore("pop3");
store.connect(host, addr, pwd);
folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
for (Message msg : folder.getMessages())
{
if (msg.isSet(Flag.SEEN))
continue;
LOG.debug("processing email titled '" + msg.getSubject()
+ "' from '" + msg.getFrom()[0] + "'");
... do some stuff
msg.setFlag(Flag.SEEN, true);
}
}
finally
{
if (folder != null)
folder.close(true);
if (store != null)
store.close();
}
Проблема в том, что каждый раз, когда выполняется вышеуказанный код, одни и те же сообщения (все они) обрабатываются, потому что вызов msg.isSet(Flag.SEEN)
всегда возвращает false, даже если я установил его в true на предыдущей итерации.
Клиент веб-почты даже отражает установленный флаг (заголовок меняется с жирного на обычный шрифт).
Кто-нибудь знает, что я делаю не так?
спасибо, стр.