使用imap从Exchange Server 2010读取邮件时发生异常

时间:2012-07-27 10:28:24

标签: javamail

我正在尝试从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);
    }
}

3 个答案:

答案 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"认证。

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