Javamail IMAP - 按日期搜索邮件返回错误结果

Javamail IMAP - Searching mail by date returning wrong results

我尝试使用 IMAP 从 outlook 的收件箱中获取特定日期的电子邮件,但我收到的电子邮件的日期与我用于搜索的日期不对应,我的代码如下:

SimpleDateFormat df1 = new SimpleDateFormat( "MM/dd/yy" );
String dt="10/02/18";
java.util.Date dDate = df1.parse(dt);

/* 
Connection code to the email goes here 
*/

SearchTerm st = new ReceivedDateTerm(ComparisonTerm.EQ,dDate);
IMAPFolder inbox = (IMAPFolder) store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);
Message[] messages = inbox.search(st);
int total = messages.length;

/* RESULTS */

println("\nTotal_Email = " + messages.length);
for (int index = 0; index < total; index++) {
            Date date=message.getReceivedDate();
            System.out.println("DATE RECEIVED="+date);
}

我在使用日期“10/01/18”时得到以下结果

Total_Email = 5

DATE RECEIVED=Mon Oct 01 17:45:44 COT 2018

DATE RECEIVED=Mon Oct 01 16:43:27 COT 2018

DATE RECEIVED=Mon Oct 01 16:17:11 COT 2018

DATE RECEIVED=Mon Oct 01 15:37:38 COT 2018

DATE RECEIVED=Mon Oct 01 14:53:48 COT 2018

然后我在使用日期“10/02/18”时得到以下结果

Total_Email = 6

DATE RECEIVED=Tue Oct 02 08:09:53 COT 2018

DATE RECEIVED=Mon Oct 01 23:21:34 COT 2018

DATE RECEIVED=Mon Oct 01 22:37:22 COT 2018

DATE RECEIVED=Mon Oct 01 21:33:37 COT 2018

DATE RECEIVED=Mon Oct 01 20:21:20 COT 2018

DATE RECEIVED=Mon Oct 01 19:11:50 COT 2018

我的猜测是这与我的时区有关,我住在哥伦比亚并且我的时区是 GMT-5,有什么方法可以修复并获得正确的结果吗?

不,IMAP 不识别时区,它是特定于服务器的,它计算和报告结果时所用的时区。您可能需要请求比您需要的更多的请求并进行客户端过滤。

为方便起见,大多数大型跨国服务器都使用 UTC,因此您必须获取与您感兴趣的时间段重叠的两天。