Вместо того, чтобы извлекать все сообщения, вы должны попробовать воспользоваться поиском на стороне сервера.
Это работает с использованием search метода javax.mail.Folder . Вам, вероятно, придется написать свой собственный SearchTerm на основе критерия Message.getReceivedDate ().
Если поиск на стороне сервера не работает, вы можете попробовать использовать профиль выборки, т.е. вместо inbox.getMessages () использовать inbox.fetch (Message [] msgs, FetchProfile fp).
Javadoc для fetch говорит: Клиенты используют этот метод, чтобы указать, что указанные элементы необходимы в массовом порядке для данного диапазона сообщений. Ожидается, что реализации извлекут эти элементы для заданного диапазона сообщений эффективным способом. Обратите внимание, что этот метод является лишь подсказкой реализации для предварительной выборки нужных элементов.