похоже, что «увиденный» флаг не работает - PullRequest
4 голосов
/ 21 июня 2011

Я играю с реализацией 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 на предыдущей итерации.

Клиент веб-почты даже отражает установленный флаг (заголовок меняется с жирного на обычный шрифт).

Кто-нибудь знает, что я делаю не так?

спасибо, стр.

1 Ответ

4 голосов
/ 22 июня 2011

дальнейшее чтение говорит мне, что pop3 не поддерживает установку / получение этих флагов, только удаление сообщений.

кажется, что pop3 поддерживает установку флага (так как я мог видеть, что флаг был успешно установлен впрограмма веб-почты), но не смог впоследствии прочитать состояние флагов.

К счастью, мой почтовый сервер поддерживает imap, который делает все как положено.Я просто должен был изменить свой код с mailSession.getStore("pop3") на mailSession.getStore("imap").

...