2016-04-24 22 views
1

上のJavaのSSLSocketを使用していない、それがうまく動作しますが、マックのPCにはありません。のIMAP Gmailが応答MAC

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

オープンソケットが42.118.56.137 c14mb33681806itd

からの要求のための準備ができてnormaly

  • OK Gimapを返されたが、私はログイン声明 を実行したときのメッセージには、接続をハング何の反応もなくタイムアウトすることはありません。 私は非セキュアを使用しようとしましたが、意味がありませんでした。

    指摘した2段階認証プロセスをオフにしています。
    Insecuredアプリが有効です。

+0

行の末尾ではなく\ r \ 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")