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);