Не удается получить непрочитанные письма из учетной записи hotmail с помощью javamail api


Я пытаюсь написать простую java-программу, которая возвращает мне все непрочитанные письма из моей учетной записи hotmail с помощью javamail api. Вот код, который я использую:

        String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
    Properties props = new Properties();
    props.setProperty("mail.pop3.ssl.enable", "true");
    props.setProperty("mail.pop3s.socketFactory.class", SSL_FACTORY); 
    props.setProperty("mail.pop3s.socketFactory.fallback", "false"); 
    props.setProperty("mail.pop3s.port", "995"); 
    props.setProperty("mail.pop3s.socketFactory.port", "995");
    Session session = Session.getInstance(props,
        new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });
        Store store = session.getStore("pop3");
        store.connect("pop3.live.com", username, password);
        System.out.println(store);

        Folder inbox = store.getFolder("Inbox");
        inbox.open(Folder.READ_ONLY);
        FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
        Message messages[] = inbox.search(ft);

В чем моя ошибка в этом коде? Потому что я получаю все письма, а не только непрочитанные.

1 2

1 ответ:

Цитирую документацию Sun об их связанном поставщике POP3 (который, как я предполагаю, вы используете) - документация находится в /docs / sundocs

POP3 не поддерживает постоянные флаги (см.getPermanentFlags ()). В в частности, флаги.Флаг.Недавний флаг никогда не будет установлен для POP3 сообщения. Это зависит от приложения, чтобы определить, какие сообщения в Почтовый ящик POP3-это "новый". Существует несколько стратегий для достижения этой цели это, в зависимости от потребностей применение и окружающая среда: A простой подход состоял бы в том, чтобы отслеживать последнее сообщение, увиденное приложение. Альтернативой было бы следить за потоками жидкости (смотрите ниже) всех сообщений, которые были замечены. Другой подход-это чтобы загрузить все сообщения в локальный почтовый ящик, чтобы все сообщения в почтовый ящик POP3 по определению является новым. Все подходы будут требовать некоторое постоянное хранилище, связанное с клиентом.

Я думаю, что это в значительной степени отвечает вашим Вопрос