Imap gmail 在 MAC 上使用 java SSLSocket 不响应

Imap gmail does not response using java SSLSocket on MAC

当我在 window 上执行下面的代码时,它运行良好,但 Mac pc 却没有。

//declaration is removed;
    socketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
        socket = (SSLSocket)socketFactory.createSocket("imap.gmail.com", 993);
        in = new DataInputStream(socket.getInputStream());
        output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8"));

    BufferedReader sin = new BufferedReader(new InputStreamReader(in));
    String line;
    output.println("a001 LOGIN uName pWord");//assume that uName pWord is write
    output.flush();// commit query immediately
    while ((line = sin.readLine()) != null) {
        System.out.println(line);
    }

打开套接字正常返回时的消息

  • OK Gimap ready for requests from 42.118.56.137 c14mb33681806itd

但是当我执行登录语句时 它挂起连接而没有任何响应并且永远不会超时。 我曾尝试使用非安全但它没有意义。

Noted: 2 step verification is turn off.
Insecured app is enable.

PrintWriter.println 使用平台特定的行结束符,这在 windows 和 mac 之间是不同的。 IMAP 要求 \r\n(不是 '\n')作为行尾发送。您应该使用一些方法来控制行尾,例如:

output.print("a001 LOGIN uName pWord\r\n")