Saltar al contenido

Usando JavaMail con TLS

Solución:

De hecho, tenemos un código de notificación en nuestro producto que usa TLS para enviar correo si está disponible.

Deberá configurar las propiedades de Java Mail. Solo necesita el TLS, pero es posible que necesite SSL si su servidor SMTP usa SSL.

Properties props = new Properties();
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.auth", "true");  // If you need to authenticate
// Use the following if you need SSL
props.put("mail.smtp.socketFactory.port", d_port);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");

Luego puede pasar esto a una sesión de JavaMail o cualquier otro instanciador de sesión como Session.getDefaultInstance(props).

Buen post, la linea

props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

es obligatorio si el servidor SMTP utiliza Autenticación SSL, como lo hace el servidor SMTP de GMail. Sin embargo, si el servidor usa Autenticación de texto sin formato sobre TLS, no debería estar presente, porque Java Mail se quejará de que la conexión inicial es texto sin formato.

También asegúrese de que está utilizando la última versión de Java Mail. Recientemente utilicé algunos archivos antiguos de Java Mail de un proyecto anterior y no pude hacer que el código funcionara porque el proceso de inicio de sesión estaba fallando. Después de actualizar a la última versión de Java Mail, el motivo del error quedó claro: era una javax.net.ssl.SSLHandshakeException, que no aparecía en la versión anterior de lib.

La configuración del ejemplo anterior no funcionó para el servidor que estaba usando (authsmtp.com). Seguí recibiendo este error:

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

Eliminé la configuración de mail.smtp.socketFactory y todo funcionó. La configuración final fue la siguiente (no se usó la autenticación SMTP y configuré el puerto en otro lugar):

java.util.Properties props = new java.util.Properties();
props.put("mail.smtp.starttls.enable", "true");
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *