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

Imap gmail不会在MAC上使用java SSLSocket进行响应,java,macos,imap,gmail-imap,Java,Macos,Imap,Gmail Imap,当我在窗口上执行下面的代码时,它运行得很好,但Mac pc并没有 //declaration is removed; socketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); socket = (SSLSocket)socketFactory.createSocket("imap.gmail.com", 993); in = new DataInputStream(socket.ge

当我在窗口上执行下面的代码时,它运行得很好,但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已准备好接受来自42.118.56.137 c14mb33681806itd的请求
但当我执行Login语句时 它将连接挂起而没有任何响应,并且从不超时。 我尝试使用非安全的,但没有意义

注意:关闭两步验证。
不安全的应用程序已启用


PrintWriter.println使用特定于平台的行尾终止符,这在windows和mac之间有所不同。IMAP要求将
\r\n
(不是“\n”)作为行尾发送。您应该使用某种方法来控制线的端点,例如:

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

确保发送的是\r\n而不是\n行尾。PrintWriter.Println使用特定于平台的行尾终止符。你应该用一些方法来控制行尾。你救了我一天!非常感谢muchI将添加作为答案。