Чтение писем с помощью Groovy (Java Mail) - PullRequest
0 голосов
/ 09 января 2011

Я использую groovy для доступа к Gmail и чтения входящих сообщений.Это обычная JavaMail, и я не буду описывать ее здесь.

Так что для простоты после подключения к магазину я использую это:

folder.open(Folder.READ_ONLY)

 folder.messages.each { msg ->
    ...
    doSomething with msg
...
}

это работает нормально.

Однако у меня проблема с производительностью.Иногда сообщения [] могут быть большими.Некоторые папки содержат более 1000 сообщений, и проверка их всех занимает время.

Я ищу более быстрый способ получения только тех писем, которые являются самыми последними (например, сообщения за последние 5 дней или что-то вродечто)

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

Есть ли лучший способполучить эти сообщения?

1 Ответ

1 голос
/ 09 января 2011

Если у вас JavaMail с командой SEARCH с критерием SINCE 04-JAN-2011, вы вернете заданные сообщения в выбранную папку, доставленную с 4 января.(SENTSINCE 04-JAN-2011 будет делать то же самое, только на основе заголовка сообщения «Дата».)

Что-то вроде этого:

folder.search(new ReceivedDateTerm(ComparisonTerm.GE, sinceDate));
...