2016-12-26 85 views
0
Calendar today = Calendar.getInstance(); 
today.setTime(new Date()); 
Calendar prevTime = Calendar.getInstance(); 
prevTime.setTime(new Date()); 
prevTime.add(Calendar.MINUTE, Integer.parseInt(emailProps.getProperty("MINS_DIFF")) * -1);; 
ReceivedDateTerm minDateTerm = new ReceivedDateTerm(ComparisonTerm.GE, new Date(prevTime.getTimeInMillis())); 
ReceivedDateTerm maxDateTerm = new ReceivedDateTerm(ComparisonTerm.LE, new Date(today.getTimeInMillis())); 
SearchTerm term = null; 
term = new AndTerm(minDateTerm,maxDateTerm); 
logger.debug("Filtering the date bw "+ new Date(prevTime.getTimeInMillis()).toString() + " and " +new Date(today.getTimeInMillis()).toString()); 
Message messages[] = folder.search(term); 

以上是我的代碼片段,我已經申請searchterm時間,但依然過濾器不能正常工作,它返回了整整一天的郵件之間2過濾器的Outlook電子郵件。例如,對於26日十二月,我的搜索文件夾中有10封電子郵件,在我的時間段收到的只有2封電子郵件,這是我在代碼中提到的。這裏這searchterm返回我所有的10封電子郵件。如何使用JavaMail API與IMAP

回答

0

IMAP協議只允許根據日期而不是時間進行搜索。

您可以使用Folder.search將列表縮小爲您感興趣的日期內的消息,然後將SearchTerm.match方法應用於列表中的每條消息,這將對客戶端執行匹配測試要求服務器這樣做,因此能夠精確匹配時間。

+0

謝謝比爾,我只是這樣做的。想知道是否有辦法克服一些其他情況。再次感謝:) –

+0

你想克服什麼其他場景? –

相關問題