Я просто пытаюсь прочитать все сообщения в папке «Входящие», а затем разделить их на категории «прочитанные», «непрочитанные» и «большие или равные». Пожалуйста, смотрите мои коды ниже. Раздел имени пользователя и пароля пройден.
Обычно код очень прост, но я не понимаю, почему я просто получаю все письма.
Между тем я уверен, что читаю сообщения. Также даты получения писем отличаются, и у нас есть новые письма.
У меня нет исключений или ошибок.
Также проверено ниже и еще пара вопросов.
Чтение последних и невидимых сообщений с использованием javax.mail
Properties props = new Properties();
props.put("mail.host", "outlook.office365.com");
props.put("mail.store.protocol", "pop3s");
props.put("mail.pop3s.auth", "true");
props.put("mail.pop3s.port", "995");
Session session = Session.getInstance(props, new avax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, passwd);
}
});
Security.setProperty("ssl.SocketFactory.provider", "com.ibm.jsse2.SSLSocketFactoryImpl");
//Security.setProperty("ssl.ServerSocketFactory.provider", "com.ibm.jsse2.SSLServerSocketFactoryImpl");
Store store = session.getStore("pop3s");
store.connect();
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
Calendar myCal = new GregorianCalendar();
myCal.setTime(new Date());
myCal.add(Calendar.DAY_OF_MONTH, -1);
// retrieve the messages from the folder in an array and print it
Message[] messages = emailFolder.getMessages();
System.out.println("ALL : " + messages.length);
messages = emailFolder.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false));
//messages = emailFolder.search(new FlagTerm(new Flags(Flag.SEEN), false)); // not working also
System.out.println("UNREAD : " + messages.length);
messages = emailFolder.search(new FlagTerm(new Flags(Flags.Flag.SEEN), true));
//messages = emailFolder.search(new FlagTerm(new Flags(Flag.SEEN), true)); // not working also
System.out.println("READ : " + messages.length);
messages = emailFolder.search(new ReceivedDateTerm(ComparisonTerm.GE, myCal.getTime()));
System.out.println("ReceivedDateTerm : " + messages.length);
Результат есть;
ALL: 18
UNREAD: 18
ЧИТАЙТЕ: 0
ReceivedDateTerm: 0
Спасибо