2016-12-26 4 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); 

oben ist mein Code-Schnipsel zu filtern, habe ich searchterm zwischen 2 Mal angewendet, aber immer noch der Filter funktioniert nicht, es wird den ganzen Tag E-Mails zurück. Zum Beispiel für 26. Dezember gibt es 10 E-Mails in meinem Suchordner, in dem nur 2 E-Mails zu meiner Zeit empfangen wurden, was ich im Code erwähnt habe. Hier gibt mir diese searchterm alle 10 E-Mails zurück.Wie Outlook E-Mail mit Javamail-API mit IMAP

Antwort

0

Das IMAP-Protokoll ermöglicht nur die Suche nach dem Tag, nicht nach der Uhrzeit.

Mithilfe von Folder.search können Sie die Liste an den Tagen, an denen Sie interessiert sind, auf Nachrichten beschränken und dann die SearchTerm.match-Methode auf jede Nachricht in der Liste anwenden, die den Übereinstimmungstest auf dem Client durchführt von dem Server zu bitten, es zu tun, und wird daher in der Lage sein, eine genaue Zeitübereinstimmung zu machen.

+0

Danke Bill, mache ich nur so. Willst du wissen, gibt es eine Möglichkeit, einige andere Szenarien zu überwinden. Nochmals vielen Dank :) –

+0

Welche anderen Szenarien versuchen Sie zu überwinden? –