javaMail过滤邮件问题

王路遥 发布于 2017/12/19 10:29
阅读 37
收藏 0

SearchTerm term = new SearchTerm() {
            @Override
            public boolean match(Message message) {
                try {
                    System.out.println(message.getSentDate());
                    System.out.println(message);
                } catch (MessagingException e) {
                    e.printStackTrace();
                } 
                return false;
            }
        };
        Message[] messages = folder.search(term);
                
我调用search方法的时候,search是遍历了我的整个邮箱中的邮件
而且遍历的顺序是按照时间排序的
Fri Dec 15 17:41:04 CST 2017
com.sun.mail.imap.IMAPMessage@7ce6a65d
Fri Dec 15 17:44:31 CST 2017
com.sun.mail.imap.IMAPMessage@1500955a
Fri Dec 15 17:47:11 CST 2017
com.sun.mail.imap.IMAPMessage@e874448
Fri Dec 15 17:49:07 CST 2017
com.sun.mail.imap.IMAPMessage@29b5cd00
Fri Dec 15 17:59:10 CST 2017
com.sun.mail.imap.IMAPMessage@60285225
Fri Dec 15 18:08:10 CST 2017
com.sun.mail.imap.IMAPMessage@7113b13f
Sat Dec 16 01:00:19 CST 2017
com.sun.mail.imap.IMAPMessage@45820e51
Mon Dec 18 11:51:36 CST 2017
com.sun.mail.imap.IMAPMessage@42d8062c
Mon Dec 18 12:51:33 CST 2017
com.sun.mail.imap.IMAPMessage@6043cd28
Mon Dec 18 16:13:12 CST 2017
com.sun.mail.imap.IMAPMessage@cb51256
Mon Dec 18 19:01:29 CST 2017
com.sun.mail.imap.IMAPMessage@59906517
Tue Dec 19 01:00:34 CST 2017
com.sun.mail.imap.IMAPMessage@5bfbf16f

那么我可以这样吗?
减少邮件获取量,并且直接获取到时间比较近的邮件
        int messageCount = folder.getMessageCount();
        Message[] messages1 = folder.getMessages(messageCount-50,messageCount);
        Message[] messages = folder.search(term,messages1);
                
或者我直接获取用message获取stream去用filter去过滤不要的邮件和使用folder的searchTram哪一个效率更高?

加载中
返回顶部
顶部