Ayuda cliente pop3 java

Ybeki

Lanero Regular
22 Dic 2012
1
Hola, tengo que hacer un cliente de pop3 en java que pasandole un servidor un usuario y su contraseña y mostrandolos por pantalla nos deje mediante un menu con 2 opciones: mostrar el tamaño, el from, to y subject de los mensajes que tenemos en bandeja de correo, y otra opcion de mostrar un mensaje por pantalla y luego borrarlo.

He hecho este codigo pero me he quedado atascado y no se que me falla, si alguien me pudiera ayudar y decir que fallo puedo tener me vendria muy bien.

import java.util.*;
import java.net.*;
import java.io.*;



public class pop3{
public static void main(String args[]) throws UnknownHostException,java.io.IOException{
Scanner teclado=new Scanner(System.in);
System.out.println("Dime el servidor al que te deseas conectar");
String S=teclado.nextLine();
System.out.println("Dime tu usuario");
String U=teclado.nextLine();
System.out.println("Dime tu contraseña");
String C=teclado.nextLine();
System.out.println("Tu usuario es "+U+"\nTu contraseña "+C+"\nAl servidor al que deseas conectar es "+S); //lo mostramos por pantalla

try{
Socket s=new Socket(S,110);
Scanner entrada=new Scanner(s.getInputStream());
PrintWriter salida=new PrintWriter(s.getOutputStream()); //declaramos la entrada y salida
if(entrada.nextLine().startsWith("ERR",2)==true){
System.out.println("Ha ocurrido un error, cerrando servidor, intentalo de nuevo"); s.close();
}
else{
System.out.println(entrada.nextLine());
//System.out.println("¡Conexion al servidor "+S+" conseguida!");

salida.printf("user "+U);
salida.flush();
if(entrada.nextLine().startsWith("ERR",2)==true){
System.out.println("Ha ocurrido un error, cerrando servidor, intentalo de nuevo"); s.close();}
else {
salida.printf("pass "+C);
salida.flush();
if(entrada.nextLine().startsWith("ERR",2)==true){
System.out.println("Ha ocurrido un error, cerrando servidor, intentalo de nuevo"); s.close();}
else {
while(entrada.hasNext()){
System.out.println(entrada.nextLine());}
boolean salir=false;
while (salir==false){

System.out.println("Introduce el numero de lo que quieras hacer: \n 1 para mostar una lista de correos existentes en el buzon \n 2 para visualiar y eliminar un correo");
int num=teclado.nextInt();
switch(num){
case 1:
//vamos a mirar cuanto correos tenemos
int num_correo=0;
salida.printf("LIST");
salida.flush();
while(entrada.hasNext()){
num_correo++;
}
num_correo=num_correo-2; // ya que tenemos la linea de OK y un ultimo mensage que es un punto, por lo que no contarian como correos
int aux=1;
String p="";
while(aux<=num_correo){
salida.printf("TOP "+aux+" "+0); //las cabeceras siempre se nos devuelven por lo que pongo 0 lineas porque el mensage no nos interesa
salida.flush();
p="Tamaño: "+entrada.nextLine();
while(entrada.nextLine().startsWith("From")==true){ p=p+" "+entrada.nextLine();}
while(entrada.nextLine().startsWith("To")==true){ p=p+" "+entrada.nextLine();}
while(entrada.nextLine().startsWith("Subject")==true){ p=p+" "+entrada.nextLine();}

System.out.println(aux+" "+p); //muestro las mcaracteristicas de cada mensage por pantalla en una sola linea
p="";

}
break;
case 2:
System.out.println("Dime que correo quieres leer, sabiendo que una vez lo leas se eliminara del buzon");
int num_corr=teclado.nextInt();
salida.printf("RETR "+num);
salida.flush(); //pedimos que nos envie un correo
while(entrada.hasNext()){
System.out.println(entrada.nextLine());} // lo muestro
salida.printf("DELE "+num);
salida.flush(); //lo borro
System.out.println("\n\n correo "+num+ " borrado");

break;
default:System.out.println("Introduce un numero valido");
}
System.out.println("Si quieres salir ya de tu buzon de correos pulsa 1, si quieres continuar pulsa cualquier otro numero");
int condicion=teclado.nextInt();
if (condicion==1){salir=true;}
}
s.close();
}
}
}
}catch (UnknownHostException e){System.out.println("host desconocido");
}catch (IOException e){System.out.println("No se puede conectar");}
}


}
 

Los últimos temas