我正在尝试连接到 gmail imap,但登录后无法执行任何命令。
我正在跑去openssl s_client -connect imap.gmail.com:993
连接,
* OK Gimap 已准备好接收来自 128.146.221.118 42if6514983iwn.40 的请求 。 能力 * 功能 IMAP4rev1 取消选择空闲命名空间配额 XLIST 子项 XYZZY SASL-IR AUTH=XOAUTH 。好的,这就是她写的全部内容!42if6514983iwn.40 . 登录 {电子邮件已删除} {密码已删除} * 功能 IMAP4rev1 取消选择文字 + 空闲命名空间配额 ID XLIST 子项 X-GM-EXT-1 UIDPLUS 压缩 = DEFLATE . 确定 {电子邮件已删除} 已验证 (成功) 。 能力
此时它只是挂起并保持连接打开。我猜 Gmail 在验证我的身份后会将您推送到集群中的某个节点?
答案1
我刚刚遇到了同样的问题。使用 -crlf 标志。登录前,Gmail 的 IMAP 服务器对换行符不太挑剔,它们可以是<LF>
或<CRLF>
,但登录后,Gmail 的服务器仅响应以 结尾的行<CRLF>
。
根据IMAP 规范:客户端和服务器传输的所有交互都以行的形式进行,即以 CRLF 结尾的字符串。IMAP4rev1 客户端或服务器的协议接收方要么正在读取一行,要么正在读取具有已知计数的八位字节序列,后跟一行。
openssl s_client -crlf -connect imap.gmail.com:993
答案2
imap 服务器是异步的,因此添加以下代码
inbox = imapSslStore.getFolder("Inbox");
Thread.sleep(3000);
Message messages[] = null;
inbox.open(Folder.READ_ONLY);
Thread.sleep(3000);