如何使用java和端口143发送IMAP命令

如何使用java和端口143发送IMAP命令,java,tcp,imap,Java,Tcp,Imap,我在写imap邮件检查器。 我有这样的想法: tcpSocket = new Socket(); tcpSocket.connect(new InetSocketAddress(Config.HOST, 143)); ... // greeting message from server String answer = socketBufferedReader.readLine(); // try to login socketBufferedWriter.write("A001 login m

我在写imap邮件检查器。 我有这样的想法:

tcpSocket = new Socket();
tcpSocket.connect(new InetSocketAddress(Config.HOST, 143));
...
// greeting message from server
String answer = socketBufferedReader.readLine();
// try to login
socketBufferedWriter.write("A001 login my_login password\n");
socketBufferedWriter.flush();
// get answer
answer = socketBufferedReader.readLine();
在最后一行代码中,程序被阻止。当超时时间过去时,我得到的答案是“*再见自动空闲时间过长”


我不明白怎么了。我想我使用了错误的命令格式,但我不确定IMAP是否绝对要求行结尾为\r\n,而不仅仅是\n。这适用于许多其他邮件协议。

为什么不使用现有的库,如,而不是从头开始编写内容?我注意到您正在使用
\n
而不是
\r\n
终止命令,这可能是失败的原因,也可能不是。在发送命令之前,您可能需要侦听服务器的欢迎横幅(并使用它验证您想要使用的登录类型是否受支持)?另外,您应该实现STARTTLS,否则您将以明文形式发送登录凭据。最后,为了正确地完成所有这些,我必须响应@gma关于使用现有库的建议。