我正在尝试使用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
接收日期= 2018年10月1日星期一17:45:44 COT
DATE RECEIVED =星期一10月01日16:43:27 COT 2018
DATE RECEIVED =星期一10月01日16:17:11 COT 2018
收到日期= 2018年10月1日星期一15:37:38
接收日期= 2018年10月1日星期一14:53:48
然后当我使用日期“ 10/02/18”时,我得到以下结果
Total_Email = 6
DATE RECEIVED =星期二10月02 08:09:53 COT 2018
接收日期= 2018年10月1日星期一23:21:34
DATE RECEIVED = 2018年10月1日星期一COT
DATE RECEIVED = 2018年10月1日星期一21:33:37
接收日期= 2018年10月1日星期一20:21:20
DATE RECEIVED = 2018年10月1日星期一COT
我的猜测是,这与我的时区有关,我居住在哥伦比亚,时区为GMT-5,是否有任何方法可以解决并获得正确的结果?
答案 0 :(得分:2)
否,IMAP不能识别时区,并且服务器特定于IMAP来计算和报告结果所在的时区。您可能需要的请求超出了要求,并需要进行客户端过滤。
为方便起见,大多数大型跨国服务器都使用UTC,因此您必须获取与您感兴趣的时间重叠的两天。