
Cliente IMAP
Publicado por Eric (2 intervenciones) el 16/01/2024 22:02:36
Buenas tengo un cliente IMAP al que le tengo que pasar varias opciones como crear/borrar carpetas y he hecho un menú pero necesito que me vuelva a poder seleccionar otra opcion es decir que vuelva a salir el menú:
package edu.ucam;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Scanner;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
public class Aplicacion {
public static String leerRespuesta(BufferedReader in) throws IOException {
String linea = "";
linea = in.readLine();
System.out.println("Servidor: " + linea);
while ((linea = in.readLine()).startsWith("*")) {
System.out.println("Servidor: " + linea);
}
System.out.println(linea);
return linea;
}
public static void main(String[] args) {
// El host y el puerto del servidor IMAP de Gmail.
String host = "imap.gmail.com";
int port = 993;
try {
String correo = "*************";
String clave = "************";
// Obteniendo el SSLSocketFactory
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
// Creando un SSLSocket
SSLSocket sslSocket = (SSLSocket) factory.createSocket(host, port);
try (PrintWriter out = new PrintWriter(new OutputStreamWriter(sslSocket.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(sslSocket.getInputStream()));
Scanner scanner1 = new Scanner(System.in)) {
System.out.println("Bienvenida: " + in.readLine());
out.println("a1 LOGIN " + correo + " " + clave);
out.flush();
leerRespuesta(in);
boolean salir = false;
do {
System.out.println("Seleccione una opción:");
System.out.println("a. Leer el contenido de un mensaje concreto");
System.out.println("b. Eliminar mensajes");
System.out.println("c. Crear carpeta");
System.out.println("d. Eliminar carpeta");
System.out.println("e. Listar correos de una carpeta seleccionada");
System.out.println("f. Salir");
System.out.print("Seleccione una opción: ");
String opcion = scanner1.nextLine();
switch (opcion) {
case "a":
System.out.println("Opción a seleccionada");
System.out.println("Ingrese el número de secuencia del mensaje:");
String numeroSecuencia = scanner1.nextLine();
out.println("a3 FETCH " + numeroSecuencia + " RFC822");
out.flush();
leerRespuesta(in);
break;
case "b":
System.out.println("Opción b seleccionada");
System.out.println("Ingrese el número de secuencia del mensaje a eliminar:");
String numeroEliminar = scanner1.nextLine();
out.println("a2 STORE " + numeroEliminar + " +FLAGS (\\Deleted)");
out.flush();
leerRespuesta(in);
out.println("a3 EXPUNGE");
out.flush();
leerRespuesta(in);
break;
case "c":
System.out.println("Opción c seleccionada");
System.out.println("Ingrese el nombre de la nueva carpeta:");
String nuevaCarpeta = scanner1.nextLine();
out.println("a4 CREATE " + nuevaCarpeta);
out.flush();
leerRespuesta(in);
break;
case "d":
System.out.println("Opción d seleccionada");
System.out.println("Ingrese el nombre de la carpeta a eliminar:");
String carpetaEliminar = scanner1.nextLine();
out.println("a5 DELETE " + carpetaEliminar);
out.flush();
leerRespuesta(in);
break;
case "e":
System.out.println("Opción e seleccionada");
System.out.println("Ingrese el nombre de la carpeta a seleccionar:");
String carpetaSeleccionar = scanner1.nextLine();
out.println("a6 SELECT " + carpetaSeleccionar);
out.flush();
leerRespuesta(in);
out.println("a7 SEARCH ALL");
out.flush();
leerRespuesta(in);
break;
case "f":
salir = true;
break;
default:
System.out.println("Opción inválida");
break;
}
System.out.print("¿Desea seleccionar otra opción? (s/n): ");
scanner1.nextLine(); // Limpiar el búfer
String continuar = scanner1.nextLine();
if (!continuar.equalsIgnoreCase("s")) {
salir = true;
} else {
salir = false; // Reiniciar la variable sali
}
System.out.println();
} while (!salir);
System.out.println("Programa finalizado");
}
} catch (Exception e) {
System.out.println("Error al acceder al correo: " + e.getMessage());
e.printStackTrace();
}
}
}
package edu.ucam;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Scanner;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
public class Aplicacion {
public static String leerRespuesta(BufferedReader in) throws IOException {
String linea = "";
linea = in.readLine();
System.out.println("Servidor: " + linea);
while ((linea = in.readLine()).startsWith("*")) {
System.out.println("Servidor: " + linea);
}
System.out.println(linea);
return linea;
}
public static void main(String[] args) {
// El host y el puerto del servidor IMAP de Gmail.
String host = "imap.gmail.com";
int port = 993;
try {
String correo = "*************";
String clave = "************";
// Obteniendo el SSLSocketFactory
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
// Creando un SSLSocket
SSLSocket sslSocket = (SSLSocket) factory.createSocket(host, port);
try (PrintWriter out = new PrintWriter(new OutputStreamWriter(sslSocket.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(sslSocket.getInputStream()));
Scanner scanner1 = new Scanner(System.in)) {
System.out.println("Bienvenida: " + in.readLine());
out.println("a1 LOGIN " + correo + " " + clave);
out.flush();
leerRespuesta(in);
boolean salir = false;
do {
System.out.println("Seleccione una opción:");
System.out.println("a. Leer el contenido de un mensaje concreto");
System.out.println("b. Eliminar mensajes");
System.out.println("c. Crear carpeta");
System.out.println("d. Eliminar carpeta");
System.out.println("e. Listar correos de una carpeta seleccionada");
System.out.println("f. Salir");
System.out.print("Seleccione una opción: ");
String opcion = scanner1.nextLine();
switch (opcion) {
case "a":
System.out.println("Opción a seleccionada");
System.out.println("Ingrese el número de secuencia del mensaje:");
String numeroSecuencia = scanner1.nextLine();
out.println("a3 FETCH " + numeroSecuencia + " RFC822");
out.flush();
leerRespuesta(in);
break;
case "b":
System.out.println("Opción b seleccionada");
System.out.println("Ingrese el número de secuencia del mensaje a eliminar:");
String numeroEliminar = scanner1.nextLine();
out.println("a2 STORE " + numeroEliminar + " +FLAGS (\\Deleted)");
out.flush();
leerRespuesta(in);
out.println("a3 EXPUNGE");
out.flush();
leerRespuesta(in);
break;
case "c":
System.out.println("Opción c seleccionada");
System.out.println("Ingrese el nombre de la nueva carpeta:");
String nuevaCarpeta = scanner1.nextLine();
out.println("a4 CREATE " + nuevaCarpeta);
out.flush();
leerRespuesta(in);
break;
case "d":
System.out.println("Opción d seleccionada");
System.out.println("Ingrese el nombre de la carpeta a eliminar:");
String carpetaEliminar = scanner1.nextLine();
out.println("a5 DELETE " + carpetaEliminar);
out.flush();
leerRespuesta(in);
break;
case "e":
System.out.println("Opción e seleccionada");
System.out.println("Ingrese el nombre de la carpeta a seleccionar:");
String carpetaSeleccionar = scanner1.nextLine();
out.println("a6 SELECT " + carpetaSeleccionar);
out.flush();
leerRespuesta(in);
out.println("a7 SEARCH ALL");
out.flush();
leerRespuesta(in);
break;
case "f":
salir = true;
break;
default:
System.out.println("Opción inválida");
break;
}
System.out.print("¿Desea seleccionar otra opción? (s/n): ");
scanner1.nextLine(); // Limpiar el búfer
String continuar = scanner1.nextLine();
if (!continuar.equalsIgnoreCase("s")) {
salir = true;
} else {
salir = false; // Reiniciar la variable sali
}
System.out.println();
} while (!salir);
System.out.println("Programa finalizado");
}
} catch (Exception e) {
System.out.println("Error al acceder al correo: " + e.getMessage());
e.printStackTrace();
}
}
}
Valora esta pregunta


0