protected List<ImapMessage> getMessages(final int start, final int end, Date earliestDate,
final boolean includeDeleted, final MessageRetrievalListener<ImapMessage> listener)
throws MessagingException {
if (start < 1 || end < 1 || end < start) {
throw new MessagingException(String.format(Locale.US, "Invalid message set %d %d", start, end));
}
checkOpen();
String dateSearchString = getDateSearchString(earliestDate);
String command = String.format(Locale.US, "UID SEARCH %d:%d%s%s", start, end, dateSearchString,
includeDeleted ? "" : " NOT DELETED");
try {
List<ImapResponse> imapResponses = connection.executeSimpleCommand(command);
SearchResponse searchResponse = SearchResponse.parse(imapResponses);
return getMessages(searchResponse, listener);
} catch (IOException ioe) {
throw ioExceptionHandler(connection, ioe);
}
}