我正在尝试使用Javamail从Gmail收件箱中获取未读邮件,但我不能。我只检索存档的消息(从2011年开始!!!),我不知道为什么或如何做。
这是我的代码:
public List<DefaultMessage> getLatestNthMessages(Integer numberOfMessages) throws Exception {
URLName url = new URLName("pop3", "pop.gmail.com", 995, "",username, password);
Store store = new POP3SSLStore(pullSession, url);
store.connect();
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);
SearchTerm st = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
List<Message> msgs = Arrays.asList(inbox.search(st)).stream()
.sorted((m1, m2) -> m2.getMessageNumber() - m1.getMessageNumber())
.limit(numberOfMessages)
.collect(Collectors.toList());
List<DefaultMessage> listOfMessages = new ArrayList<>();
for (Message message : msgs) {
listOfMessages.add(wrapperToMessage(message));
}
return listOfMessages;
}
pullSession
实例化如下:
Properties pullProps = new Properties();
pullProps.put("mail.pop3.host", pullHost);
pullProps.put("mail.pop3.username", username);
pullProps.put("mail.pop3.port", pullPort);
pullProps.put("mail.pop3.socketFactory.port", pullPort);
pullProps.put("mail.pop3.socketFactory.fallback", "false");
pullProps.put("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
pullProps.put("mail.pop3.auth", "true");
pullSession = Session.getInstance(pullProps, null);
pullSession.setDebug(true);
答案 0 :(得分:1)
检查Gmail settings是否有POP3。
此外,您可以在代码中改进很多内容,尽管它们不是您问题的根源。首先修复所有common JavaMail mistakes。
您不应该直接创建POP3SSLStore。使用Gmail example code in the JavaMail FAQ。