0

我正在尝试从交换服务器 2010 读取邮件,但有时连接已建立,但剩余时间程序给出以下异常:

javax.mail.AuthenticationFailedException:登录失败

该代码在 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);
    }
}
4

3 回答 3

3

我在我的代码中也面临同样的问题我在我的代码中设置了两个属性禁用普通测试并启用 NTLM

props.setProperty("mail.imap.auth.plain.disable","true"); props.setProperty("mail.imap.starttls.enable", "true");

现在我的代码能够连接到交换服务器

阅读

https://forums.oracle.com/forums/thread.jspa?threadID=1587688

于 2012-12-07T07:43:06.133 回答
0

也许服务器的配置已经改变,它不再接受您的凭据,或者不再支持 JavaMail 支持的任何登录方法。

打开会话调试并检查协议跟踪。它应该提供一些关于它为什么失败的线索。

您可能还想升级到 JavaMail 1.4.5,它具有对 NTLM 身份验证的内置支持,您可能需要它。

于 2012-07-27T18:41:20.823 回答
0

即使您的凭据正常,新服务器也可能不接受您的登录方法。例如,新服务器可能不允许“普通”身份验证。

调试信息应显示接受哪些身份验证方法。

于 2014-01-22T21:32:31.543 回答