仅从 Gmail 获取看不见的邮件 - imap
Get only unseen mails from Gmail - imap
我有这个代码:
Properties properties = new Properties();
properties.setProperty("mail.store.protocol", "imaps");
try(Store store = Session.getDefaultInstance(properties, null).getStore("imaps")){
store.connect("imap.gmail.com", 993, username, password);
Folder inboxFolder = store.getFolder("INBOX");
try(inboxFolder){
//open folder
inboxFolder.open(Folder.READ_WRITE);
//get messages
Message[] messages = inboxFolder.search(new FlagTerm(new Flags(Flags.Flag.RECENT), true));
Arrays.stream(messages)
.forEach(message -> {
try{
System.out.println(message.getSubject());
}catch(Exception e){ e.printStackTrace(); }
};
}
}catch(Exception e){
e.printStackTrace();
}
我尝试从 GMail 的收件箱中读取所有看不见的邮件。
但在控制台中没有打印任何内容,messages.length
为 0。
我如何才能阅读看不见的邮件?
P.S.: 我刚刚打印了所有消息的标志(标志无关紧要),我意识到看不见的消息没有标志。这就是它应该的样子?
P.S.: 我发现了.
Message[] messages = inboxFolder.search(
new FlagTerm(new Flags(Flags.Flag.SEEN), false)
);
这个作品:new FlagTerm(new Flags(Flags.Flag.SEEN), false)
我找到了解决方案。
而不是
new FlagTerm(new Flags(Flags.Flag.RECENT), true)
我需要这样做
new FlagTerm(new Flags(Flags.Flag.SEEN), false)
获取看不见的消息。
我有这个代码:
Properties properties = new Properties();
properties.setProperty("mail.store.protocol", "imaps");
try(Store store = Session.getDefaultInstance(properties, null).getStore("imaps")){
store.connect("imap.gmail.com", 993, username, password);
Folder inboxFolder = store.getFolder("INBOX");
try(inboxFolder){
//open folder
inboxFolder.open(Folder.READ_WRITE);
//get messages
Message[] messages = inboxFolder.search(new FlagTerm(new Flags(Flags.Flag.RECENT), true));
Arrays.stream(messages)
.forEach(message -> {
try{
System.out.println(message.getSubject());
}catch(Exception e){ e.printStackTrace(); }
};
}
}catch(Exception e){
e.printStackTrace();
}
我尝试从 GMail 的收件箱中读取所有看不见的邮件。
但在控制台中没有打印任何内容,messages.length
为 0。
我如何才能阅读看不见的邮件?
P.S.: 我刚刚打印了所有消息的标志(标志无关紧要),我意识到看不见的消息没有标志。这就是它应该的样子?
P.S.: 我发现了.
Message[] messages = inboxFolder.search(
new FlagTerm(new Flags(Flags.Flag.SEEN), false)
);
这个作品:new FlagTerm(new Flags(Flags.Flag.SEEN), false)
我找到了解决方案。
而不是
new FlagTerm(new Flags(Flags.Flag.RECENT), true)
我需要这样做
new FlagTerm(new Flags(Flags.Flag.SEEN), false)
获取看不见的消息。