2015-09-08 32 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請嘗試編輯的代碼並告訴我結果。 –