# Per Socket auf POP3 zugreifen?



## Templarthelast (21. Mrz 2012)

Ich hatte mal den Gedanken meine emails per Javasocket abzurufen, allerdings bekomme ich keine Rückmeldung nachdem der Server verbunden hat. 


```
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class EmailClient {

	public static void main(String[] args) {
		String serverName = "pop.gmx.net";
		int port = 110;

		try {

			Socket client = new Socket(serverName, port);
			System.out.println("connected to "
					+ client.getRemoteSocketAddress());
			OutputStream outToServer = client.getOutputStream();
			DataOutputStream out = new DataOutputStream(outToServer);
			out.writeBytes("user test");

			InputStream inFromServer = client.getInputStream();
			DataInputStream in = new DataInputStream(inFromServer);
			System.out.println("Server says " + in.readUTF());
			client.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
```


----------



## ARadauer (21. Mrz 2012)

ich kenn den pop3 rfc jetzt nicht, aber ist "user test" dass was das protokoll erwartet?

Ich würde das nicht über sockets machen...


----------



## Templarthelast (21. Mrz 2012)

Ich wollte jezt nicht meine mail hier verbreiten, aber der server gibt zumindest bei telnet beim verbinden das aus:

```
+OK  POP3-Server ready
```


----------



## Michael... (21. Mrz 2012)

Hab keine Ahnung von POP3 aber jegliche Kommunikation, ob biologisch oder technisch benötigt ein Protokoll
Post Office Protocol ? Wikipedia


----------



## HoaX (21. Mrz 2012)

Mal ohne den dämlichen DataInputStream versucht die Daten zu lesen? Ich würde lieber nen BufferedReader + InputStreamReader verwenden. DataInputStream#readUTF erwartet ein bestimmtes Format.


----------



## Templarthelast (21. Mrz 2012)

```
in = new DataInputStream(new BufferedInputStream(
					socket.getInputStream(), 2500));
	out = new PrintStream(new BufferedOutputStream(socket.getOutputStream(),
					2500), true);
```

Damit funktioniert es dann.


----------



## HoaX (21. Mrz 2012)

Lass den DataInputStream weg, der bringt dir nix ... außer Probleme.


----------



## irgendjemand (21. Mrz 2012)

verwende lieber die JavaMail-API ... man muss das rad nicht neu erfinden

btw : die meisten provider sind mitlerweile zu TLS übergegangen ... was für pop3 das protokol POP3S als client erfordert *zumindest bei g-mail und web.de


----------

