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 -> null

    Aber 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");


Anmelden zum Antworten