es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

TLSv1.x y javax.net.ssl.SSLHandshakeException con protocolo POP3

Tengo que leer algunos correos electrónicos en la bandeja de entrada de una cuenta de correo electrónico. Necesito la actualización del sistema compatible con TLSv1.2 y cuando envío un correo electrónico puedo hacerlo correctamente, pero esta metodología no funciona cuando tengo que leer desde la carpeta de la bandeja de entrada.
A continuación se muestra mi código Java para la preparación de la conexión:

props.put("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.pop3.socketFactory.port", Integer.valueOf(extProperties.getPortInbox().trim()));
props.put("mail.pop3.ssl.protocols", "TLSv1.2");
props.put("mail.pop3.starttls.enable", Boolean.TRUE);
props.put("mail.pop3.ssl.enable", Boolean.FALSE);
props.put("mail.mime.multipart.ignoreexistingboundaryparameter", Boolean.TRUE);
props.put("mail.mime.parameters.strict", Boolean.FALSE);

Los parámetros que tengo son:

Tipo de Protocolo: POP3
Servidor de la bandeja de entrada: (mi URL del servidor)
Puerto: 995

Tengo estos errores cuando intento conectar y leer desde la carpeta de la bandeja de entrada:

...
(SimpleAsyncTaskExecutor-1) SimpleAsyncTaskExecutor-1, recibió EOFException: error
(SimpleAsyncTaskExecutor-1) SimpleAsyncTaskExecutor-1, manejo de excepción: javax.net.ssl.SSLHandshakeException: El host remoto cerró la conexión durante el handshake
(SimpleAsyncTaskExecutor-1) SimpleAsyncTaskExecutor-1, ENVIAR TLSv1 ALERTA: fatal, descripción = handshake_failure
(SimpleAsyncTaskExecutor-1) SimpleAsyncTaskExecutor-1, ESCRIBIR: TLSv1 Alert, longitud = 2
(SimpleAsyncTaskExecutor-1) SimpleAsyncTaskExecutor-1, llamada a closeSocket()
...

En el registro anterior, podemos ver el error de handshake y el TLSv1 en lugar del TLSv1.2 que he configurado.
¿Cómo puedo resolver mi problema? He probado muchas formas que encontré en StackOverflow y en internet, pero no logré resolver mi problema y ahora no tengo ni idea cuál será el siguiente paso a seguir.

Gracias por la ayuda.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Estimado usuario,

    Basándonos en el fragmento de código y en el registro de errores que nos has proporcionado, parece que no se está utilizando el protocolo TLSv1.2 al intentar leer desde la carpeta de bandeja de entrada. Una posible solución podría ser actualizar el entorno de ejecución de Java para asegurarse de que el protocolo TLSv1.2 esté disponible, y luego establecerlo explícitamente como protocolo predeterminado para las conexiones SSL en tu código.

    Para hacerlo, puedes agregar la siguiente propiedad del sistema antes de crear tu fábrica de sockets SSL:

    System.setProperty("https.protocols", "TLSv1.2");

    Esto debería asegurar que el protocolo TLSv1.2 se utilice al crear conexiones SSL, incluyendo al leer desde la carpeta de bandeja de entrada.

    Además, podría valer la pena verificar si el servidor que aloja la cuenta de correo electrónico admite TLSv1.2 para conexiones POP3. Puedes intentar conectarte al servidor utilizando otro cliente de correo electrónico o software para verificar si el problema es específico de tu código Java o si es un problema del lado del servidor.

    Espero que esto ayude a resolver tu problema. No dudes en comunicarte si tienes más preguntas o inquietudes.

    Saludos cordiales,
    [Tu nombre]

Comments are closed.