Как получить полезную информацию о почте с помощью общего ImapClient? Не просто логический статус, а реальная информация?

Мой мавен

<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.3</version>
</dependency>

Мой код следующий

IMAPClient client = new IMAPClient();
client.connect("localhost");
for(50K users){
    client.login(login + emailSuffix, password);
    for (int i = 0; i < folders.length; i++) {
        System.out.println(client.select("INOX"); //prints true, it's ok
    }
}

Как я могу получить сообщения с помощью клиента Apache Commons? Все методы возвращают логическое значение или значение void, так что похоже, что это просто библиотека проверки сервера, я прав? Можно ли как-нибудь получить полезную информацию от imapclient? Я имею в виду количество непрочитанных сообщений, объекты Message (контент + заголовки +sibject) под некоторым термином и так далее.

PS Java Mail API, конечно, имеет все функции, которые мне нужны, но он очень медленный для использования его в цикле 50 КБ (Мои усилия по Java Mail API описаны на другом вопросе SO. Commons намного быстрее подключается, но не может дать полезную информацию (

1 ответ

Решение

Наконец, решил мою проблему, просто перебрав файловую систему (у меня есть формат maildir). Я предполагаю, что Java Mail API делает новую аутентификацию dovecot для каждого пользователя в store.connect в то время как он должен просто подключиться один раз (использовать dovecot auth) и после этого войти в систему для каждого пользователя (использовать dovecot imap-login). Вот почему я ждал 1 минуту для каждой итерации - это стандартный процесс авторизации в конфигурации dovecot. Я не уверен, но выглядит так.

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

Другие вопросы по тегам