首先,对不起我的英语(我来自西班牙)
我正在尝试从 Weblogic 8.1 服务器内的 Javamail 连接到带有 IMAP 和 SSL 的 Exchange 2010 邮件服务器。
这是我的代码
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);
此时,我得到 javax.mail.AuthenticationFailedException: Command received in Invalid state。用户参数是“域\用户登录\邮箱别名”的组合。我使用它是因为我在操作指南中以这种方式看到了它。我已经在我的 Weblogic Server 中安装了有效的 SSL 证书。
我不知道错误在哪里。
通过调试,我得到了这个:
调试:getProvider() 返回 javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc]
OK Microsoft Exchange IMAP4 服务已准备就绪。
A0 能力
CAPABILITY IMAP4 IMAP4rev1 LOGINDISABLED STARTTLS 儿童空闲命名空间文字+
A0 OK 能力完成。
A1 登录“域\用户\邮箱别名”密码
A1 BAD 命令在无效状态下收到。
错误 2:javax.mail.AuthenticationFailedException:收到的命令处于无效状态。