/*
 * Created on 2 nov. 2004
 *
 */
package pop;

import java.io.*;
import java.net.*;
import java.util.*;

/**
 * @author Adrien BOUVET
 * 
 */
public class Pop
{
	String server;
	String user;
	String pass;
	
	Pop(String zserver, String zuser, String zpass)
	{
		server = zserver;
		user = zuser;
		pass = zpass;
	}
	
	void lit()
	{
		PrintWriter to;
		BufferedReader from;
		String str, title, msg;
		Vector v = new Vector();
		
		try{
			Socket socket = new Socket(InetAddress.getByName(server), 110);
			
			to = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
			from = new BufferedReader( new InputStreamReader(socket.getInputStream()));
		
			while( !(from.readLine()).startsWith("+OK"));
			to.println("USER "+user);
			while( !(from.readLine()).startsWith("+OK"));
			to.println("PASS "+pass);
			while( !(from.readLine()).startsWith("+OK"));
			to.println("LIST");
			while( !(from.readLine()).startsWith("+OK"));
			
			do{
				str = from.readLine();
				if( str.compareTo(".")!=0) v.add(str);	//v contient le résultat de la commande LIST (= nbre msgs)
			}while( str.compareTo(".")!=0);
			
			for(int i=0; i<v.size(); i++) {
				title = (String)v.elementAt(i);
				to.println("RETR " +(new StringTokenizer(title)).nextToken()+"\r");
				while( !(from.readLine()).startsWith("+OK") );
				msg = "";
				do {
					msg += from.readLine() + "\n";
				}while( !msg.endsWith("\n.\n") );
				System.out.println(msg);				
			}
			
			socket.close();						
		}catch(Exception e){ System.err.println(e);}
	}
	
	
	
	public static void main(String[] args)
	{
		Pop p = new Pop("212.27.42.14", "login", "password"); //IP de pop.free.fr
		p.lit();
	}
}
