ein pop3 Programm
-
Hallo,
Ich habe ein Pop3 Programm geschrieben. Bei der Eingabe des Passworts
liefert der Server immer eine Null zurück:Host -> +OK WEB.DE POP3-Server
user -> +OK Bitte Kennwort eingeben/enter password
password -> nullAber die gleiche Vorgehensweise kann man doch in Kommandozeilen
problemlos schaffen.
Hinweise?import java.io.*; import java.net.*; public class pop3Client { public static void main(String[] args) { Socket pop3Socket = null; DataOutputStream os = null; DataInputStream is = null; // Port 110 ist reserviert fuer POP3 try { pop3Socket = new Socket("pop3.web.de", 110); os = new DataOutputStream(pop3Socket.getOutputStream()); is = new DataInputStream(pop3Socket.getInputStream()); //PrintWriter os = new PrintWriter(pop3Socket.getOutputStream() ); } catch (UnknownHostException e) { System.err.println("Don't know about host: hostname"); } catch (IOException e) { System.err.println("Couldn't get I/O for the connection to: hostname"); } // If everything has been initialized then we want to write some data // to the socket we have opened a connection to on port 110 if (pop3Socket != null && is != null) { try { // The capital string before each colon has a special meaning to SMTP // you may want to read the POP3 specification, RFC1822/3 System.out.println( "Host -> " + is.readLine() ); os.writeBytes("USER " + "meinName"); System.out.println( "user -> " + is.readLine() ); os.writeBytes("PASS " + "meinPasswort"); System.out.println( "password -> " + is.readLine() ); // keep on reading from/to the socket till we receive the "Ok" from SMTP, // once we received that then we want to break. String responseLine; while ((responseLine = is.readLine()) != null) { System.out.println("Server: " + responseLine); if (responseLine.indexOf("Ok") != -1) {break;} } os.close(); is.close(); pop3Socket.close(); } catch (UnknownHostException e) { System.err.println("Trying to connect to unknown host: " + e); } catch (IOException e) { System.err.println("IOException: " + e); } } } }
Danke im Vorraus
Edit: Code-Tags eingefügt ...
-
kann ich nicht lesen. keine code-tags.
-
Also ich glaube es reicht wenn du nur den Socket schließt.
Und zu deiner Frage:Ich denke mal der Fehler ist, dass du keine CRLF-Sequenz an die Nachricht für den Server ranhängst! Also:
os.writeBytes("USER" + "meinName\r\n");