2016-04-24 17 views
1

Wenn ich unten Code auf Fenster ausgeführt, läuft es gut, aber Mac pc nicht.Imap Gmail reagiert nicht mit Java SSLSocket auf 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); 
    } 

Die Nachricht, wenn offene Buchse normaly zurück

  • OK GIMAP bereit für Anfragen von 42.118.56.137 c14mb33681806itd

aber wenn ich Login-Anweisung ausführen Es Verbindung hängen auf ohne Antwort und niemals eine Auszeit. Ich habe versucht, nicht gesichert zu verwenden, aber es ergab keinen Sinn.

Hinweis: Bestätigung in zwei Schritten ist deaktiviert.
Insecured App ist aktiviert.

+0

Stellen Sie sicher, dass Sie senden \ r \ n, nicht \ n Ende der Zeilen. – Max

+0

PrintWriter.Println verwendet einen plattformspezifischen End-of-Line-Terminator. Sie sollten eine Methode verwenden, bei der Sie das Zeilenende steuern. – Max

+0

U rettete meinen Tag! Vielen Dank – Vuong

Antwort

1

PrintWriter.println verwendet einen plattformspezifischen End-of-Line-Terminator, der sich zwischen Windows und Mac unterscheidet. IMAP erfordert, dass \r\n (nicht '\ n') als Zeilenende gesendet wird. Sie sollten eine Methode verwenden, bei der Sie das Ende von Zeilen steuern, wie zum Beispiel:

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