Javamail IMAP - поиск почты по дате с ошибочными результатами - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь получать электронные письма определенной даты из входящей почты в Outlook, используя IMAP, но я получаю электронные письма с датами, которые не соответствуют дате, которую я использую для своего поиска, мой код следующий:

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

ДАТА ПОЛУЧЕНА = Пн. 01 октября 17:45:44 COT2018

ДАТА ПОЛУЧЕНА = Пн 01 октября 16:43:27 COT 2018

ДАТА ПОЛУЧЕНА = Пн 01 октября 16:17:11 COT 2018

ДАТА ПОЛУЧЕНА = Пн Окт01 15:37:38 COT 2018

ДАТА ПОЛУЧЕНА = Пн 01 октября 14:53:48 COT 2018

И тогда я получаю следующий результат, когда я использую дату "10/ 02/18 "

Total_Email = 6

ДАТА ПОЛУЧЕНА = Вт 02 октября 08:09:53 COT 2018

ДАТА ПОЛУЧЕНА = Пн 01 октября 23:21:34 COT 2018

ДАТА ПОЛУЧЕНА = Пн 01 октября 22:37:22 COT 2018

ДАТА ПОЛУЧЕНА = Пн 01 октября 21:33:37 COT 2018

DATEПОЛУЧЕНО = понедельник, 01 октября 20:21:20 COT 2018

ДАТА ПОЛУЧЕНА = Пн 01 октября 19:11:50 COT 2018

Я предполагаю, что это связано с моим часовым поясом, я живу в Колумбии, и мой часовой пояс GMT-5, IsЕсть ли способ исправить и получить правильные результаты?

1 Ответ

0 голосов
/ 03 октября 2018

Нет, IMAP не поддерживает часовой пояс, и для конкретного сервера он определяет, в каком часовом поясе он вычисляет и сообщает о результатах. Вам может потребоваться запросить больше, чем вам нужно, и выполнить фильтрацию на стороне клиента.

Большинство избольшие многонациональные серверы используют UTC для удобства, поэтому вам придется выбрать два дня, перекрывающих интересующий вас период.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...