Javamail, Weblogic, IMAP y Exchange 2010 SSL
-
12-10-2019 - |
Pregunta
En primer lugar, lo siento por mi Inglés (soy de España)
Estoy intentando conectar con un servidor de correo Exchange 2010 con IMAP y SSL de Javamail dentro de un servidor Weblogic 8.1.
Este es mi código
Properties prop = new Properties();
// IMAP
// Disable TLS
prop.setProperty("mail.imap.starttls.enable", "false");
// Use SSL
prop.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
prop.setProperty("mail.imap.socketFactory.fallback", "false");
// Use port 993
prop.setProperty("mail.imap.port", "993");
prop.setProperty("mail.imap.socketFactory.port", "993");
prop.setProperty("mail.imaps.class", "com.sun.mail.imap.IMAPSSLStore");
Session session = Session.getDefaultInstance(prop);
session.setDebug(true);
Store store = session.getStore("imap");
store.connect(host, user, password);
En este punto, me sale javax.mail.AuthenticationFailedException: orden recibida en el estado no válido . El parámetro de usuario es una combinación de "dominio \ usuario de inicio de sesión \ buzón de correo-alias". Yo uso este porque lo vi de esta manera en una guía de cómo hacerlo. Ya instalado un certificade SSL válido en mi Weblogic Server.
No sé dónde está el error.
Con la depuración me sale esto:
DEBUG: GetProvider () devolver javax.mail.Provider [STORE, IMAP, com.sun.mail.imap.IMAPStore, Sun Microsystems, Inc]
El servicio es correcto IMAP4 de Microsoft Exchange está listo.
A0 CAPACIDAD
CAPACIDAD IMAP4 IMAP4rev1 LOGINDISABLED STARTTLS NIÑOS IDLE NAMESPACE LITERAL +
A0 OK CAPACIDAD completó.
A1 LOGIN "dominio \ usuario \ buzón de alias" contraseña
A1 BAD comando recibido en el estado no válido.
ERROR 2: javax.mail.AuthenticationFailedException: Comando recibido en el estado no válido.
Solución 3
Finalmente he resuelto este problema. Era un problema de la versión Javamail, que era demasiado viejo para Exchange 2010. Me categoria a la versión 1.4 y trabajé. Hasta ahora estaba con JavaMail 1.1.3.
Otros consejos
Si está utilizando el puerto 993, que desea imaps
en lugar de imap
como su protocolo:
Store store = session.getStore("imaps");
En el puerto 143, la conexión es texto plano. A continuación, puede comenzar opcionalmente una capa de cifrado TLS mediante la emisión de la orden STARTTLS
IMAP. (Eso es lo que controla la propiedad mail.imap.starttls.enable
.)
En el puerto 993, la conexión inicial debe sea una conexión SSL cifrada. Este protocolo de enlace SSL se tiene que hacer antes de enviar cualquier texto o recibido del servidor.
Asegúrese de que Exchange 2010 está configurado para permitir que el usuario inicios de sesión basados ??/ PWD.