【问题标题】:Get only unseen mails from Gmail - imap仅从 Gmail 中获取看不见的邮件 - imap
【发布时间】:2021-08-20 18:00:33
【问题描述】:

我有这个代码:

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)

【问题讨论】:

  • 尝试搜索 UNSEEN 而不是最近的?
  • @Max,没有Flags.Flag.UNSEEN
  • 啊,雅加达邮件隐藏了一点实现。它发送的搜索词是“UNSEEN”。找到答案后,您就可以自行回答问题了。

标签: java jakarta-mail imap gmail-imap


【解决方案1】:

我找到了解决办法。

代替

new FlagTerm(new Flags(Flags.Flag.RECENT), true)

我需要这样做

new FlagTerm(new Flags(Flags.Flag.SEEN), false)

获取看不见的消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多