7

Я пытаюсь подключиться к Gmail Imap, но я не могу выполнить какие-либо команды после входа в систему.

Я использую openssl s_client -connect imap.gmail.com:993 для подключения,

* OK Gimap ready for requests from 128.146.221.118 42if6514983iwn.40
. CAPABILITY
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA XLIST CHILDREN XYZZY SASL-IR AUTH=XOAUTH
. OK Thats all she wrote! 42if6514983iwn.40
. LOGIN {email removed} {password removed}
* CAPABILITY IMAP4rev1 UNSELECT LITERAL+ IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE
. OK {email removed} authenticated (Success)
. CAPABILITY

в этот момент он просто зависает при открытом соединении. Я предполагаю, что Gmail подталкивает вас к узлу в кластере после того, как он аутентифицирует меня?

2 ответа2

9

Я просто столкнулся с той же проблемой. Используйте флаг -crlf. Перед входом в систему сервер Gmail IMAP менее требователен к символам новой строки, они могут быть <LF> или <CRLF> , но после входа сервер Gmail отвечает только на строки, заканчивающиеся на <CRLF> .

Согласно спецификации IMAP: все взаимодействия, передаваемые клиентом и сервером, имеют форму строк, то есть строк, заканчивающихся CRLF. Получатель протокола клиента или сервера IMAP4rev1 либо читает строку, либо читает последовательность октетов с известным числом, за которым следует строка.

openssl s_client -crlf -connect imap.gmail.com:993
-1

Сервер imap работает асинхронно, поэтому добавьте следующий код

inbox = imapSslStore.getFolder("Inbox");
Thread.sleep(3000);
Message messages[] = null;
inbox.open(Folder.READ_ONLY);
Thread.sleep(3000);

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .