2015-09-08 31 views
0

我跟着这个:Reading email from gmail is not working,我能够获取所有电子邮件。但是,当我使用搜索参数时,我总是得到0个结果。这是我的尝试:从gmail搜索电子邮件不起作用

Date d1 = new DateTime(date.getTime()).toLocalDate().toDate(); 
    Date d2 = new DateTime(date.getTime()).plusDays(-30).toLocalDate().toDate(); 
    SearchTerm olderThan = new ReceivedDateTerm(ComparisonTerm.LT, d1); 
    SearchTerm newerThan = new ReceivedDateTerm(ComparisonTerm.GT, d2); 
    SearchTerm andTerm = new AndTerm(olderThan, newerThan); 

    Message[] messages = emailFolder.search(andTerm); 

如果我最后一行改为

Message[] messages = emailFolder.getMessages(); 

一切工作正常,我得到的所有电子邮件。我的收件箱中收到最近30天内收到的电子邮件。我的搜索逻辑有问题吗?

+0

我得到了这个工作cha将ReceivedDateTerm调入SentDateTerm。 – Jayz

回答

0

你缺少下面的代码行,你必须重写match方法,并把条件有

// creates a search criterion 
    SearchTerm searchCondition = new SearchTerm() { 
     @Override 
     public boolean match(Message message) { 
      try { 
       if (message.getSubject().contains(keyword)) { 
        return true; 
       } 
      } catch (MessagingException ex) { 
       ex.printStackTrace(); 
      } 
      return false; 
     } 
    }; 

    // performs search through the folder 
    Message[] foundMessages = folderInbox.search(searchCondition); 

    for (int i = 0; i < foundMessages.length; i++) { 
     Message message = foundMessages[i]; 
     String subject = message.getSubject(); 
     System.out.println("Found message #" + i + ": " + subject); 
    } 

编辑: -

SearchTerm andTerm = null; 
andTerm = new AndTerm(andTerm, olderThan); //concat the search terms 
andTerm = new AndTerm(andTerm, newerThan); 
Message messages[] = folderInbox.search(andTerm); //search on the imap server 

编辑1: -

for (Message message : messages) { 
    if (message.getSentDate().after(olderThan) && message.getSentDate().before(newerThan)) 
     { 
      //do whatever you want with your filtered by period message 
     } 
} 
+0

这没有改变任何东西,结果相同。任何其他指针? – Jayz

+0

尝试搜索关键字,并告诉我,如果你得到的结果不是? –

+0

@Jayz请尝试编辑的代码并告诉我结果。 –