Как реализовать проверку новой почты через IMAP? - PullRequest
2 голосов
/ 01 ноября 2011

У меня есть план по внедрению почтового приложения на Java. Поэтому у меня есть вопрос о проверке наличия новых писем.

Например, в Thunderbird, Параметр интервала опроса существует в настройках сервера. (интервал по умолчанию составляет 10 минут.) Но Thunderbird выглядит так, что он немедленно уведомляет, когда приходит новое письмо. Это поведение такое же, однако интервал по умолчанию изменяется.

Что означает этот интервал? И как я могу реализовать, что приложение уведомляет сразу же, когда приходит новое письмо. (Должен ли я реализовать, что в приложении есть функция опроса, приходит ли новая почта или нет?)

1 Ответ

1 голос
/ 01 ноября 2011

По умолчанию при использовании IMAP клиент будет подключаться, посмотреть, есть ли новые сообщения, есть ли их обработка и отключение, а если нет, то просто отключение.Затем клиент попытается снова через 10 минут.Однако в IMAP есть команда IDLE.В основном это означает, что вы хотите оставить соединение открытым и получать уведомления при каждом появлении нового сообщения.Команда определена в RFC2177 .

Команда довольно проста (от RFC2177 ):

C: A002 IDLE
S: + idling
...time passes; new mail arrives...
S: * 4 EXISTS
C: DONE

Я не уверен,Любой из Java-клиентов поддерживает это, но в противном случае это было бы довольно тривиально.Вам также необходимо добавить что-то, чтобы проверить, поддерживает ли сервер команду IDLE (используя возможности), а также восстановить соединение в случае сбоя.

Стоит также отметить, что существуют такие системы, как http://cloudmailin.com, которые позволяют вам получать электронную почту в виде сообщения http.Это дает вам преимущество «живого» времени отклика без необходимости запрашивать электронную почту вообще.

...