2016-04-24 66 views
1

当我在窗口上执行下面的代码时,它运行良好,但Mac电脑没有。Imap gmail不使用MAC上的java SSLSocket做出响应

//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); 
    } 

当开放式插槽返回normaly

  • OK GIMAP准备请求来自42.118.56.137 c14mb33681806itd

,但是当我执行登录声明 它挂连接的消息没有任何回应,永不超时。 我试图使用非安全但它没有任何意义。

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

+0

确保您发送\ r \ n,而不是\ n行结尾。 – Max

+0

PrintWriter.Println使用平台特定的行结束符。你应该使用一些方法来控制行尾。 – Max

+0

U救了我的一天! 非常感谢你 – Vuong

回答

1

PrintWriter.println使用平台特定的行结束符,它在Windows和Mac之间不同。 IMAP要求\r\n(不是'\ n')作为行结束发送。您应该使用某种方法控制行末,例如:

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