我正嘗試使用Javamail從Gmail收件箱取回未讀郵件,但我無法取得。我只檢索歸檔郵件(從2011年起),我不知道爲什麼或如何去做。無法使用JavaMail取回Gmail收件箱POP
這裏是我的代碼:
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);
不應該將'mail.store.protocol'設置爲'pop3s'而不是'imaps'? –
@JozefChocholacek我現在看到了,哈哈。我更新了我的帖子(但不幸的是,沒有問題) –