Question

tout d'abord désolé pour mon anglais (je suis de l'Espagne)

Je suis en train de se connecter à un serveur de messagerie Exchange 2010 avec IMAP et SSL de Javamail dans un serveur Weblogic 8.1.

Ceci est mon code

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);

A ce moment, je reçois javax.mail.AuthenticationFailedException: commande reçue dans un état non valide . Le paramètre utilisateur est une combinaison de « domaine \-connexion utilisateur \ mail-box-alias ». Je l'utilise parce que je l'ai vu de cette façon dans un guide pratique. Je l'ai déjà installé une certificade SSL valide dans mon Weblogic Server.

Je ne sais pas où l'erreur est.

Avec debug je reçois ceci:

DEBUG: GetProvider () retour javax.mail.Provider [MAGASIN, imap, com.sun.mail.imap.IMAPStore, Sun Microsystems, Inc]

OK Le service IMAP4 Microsoft Exchange est prêt.

A0 CAPACITES

CAPACITES IMAP4rev1 LOGINDISABLED STARTTLS IMAP4 ENFANTS IDLE NAMESPACE LITERAL +

A0 OK CAPACITES terminée.

A1 LOGIN mot de passe "domain \ user \ boîte aux lettres alias"

A1 BAD Commande reçue dans un état non valide.

ERREUR 2: javax.mail.AuthenticationFailedException: Commande reçue dans un état non valide.

Était-ce utile?

La solution 3

Enfin, je résolu cette question. Il était un problème de version javamail, il était trop vieux pour Exchange 2010. J'upgrated à la version 1.4 et travaillé. Jusqu'à présent, j'utilisais Javamail 1.1.3.

Autres conseils

Si vous utilisez le port 993, vous voulez imaps au lieu de imap comme protocole:

Store store = session.getStore("imaps");

Sur le port 143, la connexion est clair. Vous pouvez ensuite éventuellement commencer une couche de chiffrement TLS en exécutant la commande IMAP STARTTLS. (C'est ce qui est contrôlé par la propriété mail.imap.starttls.enable.)

Sur le port 993, la connexion initiale doit être une connexion SSL cryptée. Cette poignée de main SSL doit être fait avant que le texte est envoyé ou reçu du serveur.

Assurez-vous que Exchange 2010 est configuré pour autoriser les connexions en fonction utilisateur / passwd.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top