通过 IMAP 手动访问 GMail

通过 IMAP 手动访问 GMail

我正在尝试连接到 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);

相关内容