我正在尝试从Exchange Server 2010读取邮件,但有时连接已建立,但剩余时间程序会给出以下异常:
javax.mail.AuthenticationFailedException:LOGIN失败
代码在Exchange Server 2007上正常运行。但是从邮箱迁移到2010的时间开始,该程序只是以这种方式运行。
我也尝试过在网上提供的几个选项,但没有任何工作。我使用的是javamail-1.4.4 API版本。这是我试图连接到邮箱的代码段。
public class ReadMail {
static Store store=null;
static String host="";
static String username="";
static String password="";
public static void main(String[] arg) throws Exception{
try{
Session session;
username = "username";
password = "password";
host = "hostname";
Properties props = System.getProperties();
props.setProperty("mail.smtp.auth","true");
session = Session.getInstance(props,
new ExchangeAuthenticator(username, password));
Store st = session.getStore("imaps");
st.connect(host,username, password);
System.out.println("Connected");
}
catch (Exception e){
e.printStackTrace(System.out);
}
}
}
public class ExchangeAuthenticator extends Authenticator {
String user;
String pw;
public ExchangeAuthenticator (String username, String password)
{
super();
this.user = username;
this.pw = password;
}
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(user, pw);
}
}
答案 0 :(得分:3)
我的代码中也遇到了同样的问题,我在代码中设置了两个属性 禁用普通测试并启用NTLM
props.setProperty( “mail.imap.auth.plain.disable”, “真”); props.setProperty(“mail.imap.starttls.enable”,“true”);
现在我的代码能够与Exchange服务器连接
读它
https://forums.oracle.com/forums/thread.jspa?threadID=1587688
答案 1 :(得分:0)
服务器的配置可能已更改,并且不再接受您的凭据,或者不再支持JavaMail支持的任何登录方法。
Turn on session debugging并检查协议跟踪。它应该提供一些线索,说明它失败的原因。
您可能还希望升级到JavaMail 1.4.5,它可能需要内置的NTLM身份验证支持。
答案 2 :(得分:0)
即使您的凭据正常,新服务器也可能不接受您的登录方法。例如,新服务器可能不允许" Plain"认证。
调试信息应显示接受哪些身份验证方法。