IMAP을 통해 수동으로 Gmail에 액세스 명령을 실행할 수 없습니다. 나는

Gmail imap에 연결하려고하는데 로그인 후 명령을 실행할 수 없습니다.

나는 실행 해요 openssl s_client -connect imap.gmail.com:993, 다음 연결

* 128.146.221.118 42if6514983iwn.40의 요청에 대한 OK Gimap 준비
. 능력
* 기능 IMAP4rev1 선택하지 않은 유휴 네임 스페이스 QUOTA XLIST 어린이 XYZZY SASL-IR AUTH = XOAUTH
. OK 그녀가 쓴 전부입니다! 42.6514983iwn.40
. 로그인 {이메일 삭제} {비밀번호 삭제}
* 능력 IMAP4rev1 선택하지 않는 리터럴 + 유휴 네임 스페이스 QUOTA ID XLIST 어린이 X-GM-EXT-1 UIDPLUS COMPRESS = DEFLATE
. 확인 {이메일 삭제} 인증 (성공)
. 능력

이 시점에서 연결이 열린 상태로 중단됩니다. gmail이 나를 인증 한 후 클러스터의 노드로 푸시한다고 생각합니다.



답변

방금 같은 문제가 발생했습니다. -crlf 플래그를 사용하십시오. 사전 로그인에서 Gmail의 IMAP 서버는 줄 바꿈 문자에 대해 덜 까다 롭고 <LF>또는 문자 일 수 <CRLF>있지만 로그인하면 Gmail 서버는로 끝나는 행에만 응답합니다 <CRLF>.

IMAP 사양 에 따르면 : 클라이언트와 서버가 전송하는 모든 상호 작용은 줄의 형태, 즉 CRLF로 끝나는 문자열입니다. IMAP4rev1 클라이언트 또는 서버의 프로토콜 수신자는 라인을 읽거나 알려진 카운트와 라인이 뒤 따르는 옥텟 시퀀스를 읽습니다.

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

답변

imap 서버가 비동기이므로 아래 코드를 추가하십시오.

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