title: JAVAMAIL : AUTH NTLM failed
body: <p>i try to send email with java in local network,using microsoft exchange server  </p>
  
  <p>there is my code :</p>
  
  <pre><code>import java.io.UnsupportedEncodingException;
  import java.util.Properties;
  
  import javax.mail.Message;
  import javax.mail.MessagingException;
  import javax.mail.PasswordAuthentication;
  import javax.mail.Session;
  import javax.mail.Transport;
  import javax.mail.internet.AddressException;
  import javax.mail.internet.InternetAddress;
  import javax.mail.internet.MimeMessage;
  
  
  public class Main {
  
  
          public static void main(String[] args) {
  
              final String username = "username@MyDomain.com";
              final String password = "password";
  
              Properties props = new Properties();
              props.put("mail.smtp.auth", "true");
              props.put("mail.debug", "true");
              props.put("mail.smtp.host", "exchange_host.MyDomain.com");
              props.put("mail.smtp.port", "25");
              props.put("mail.smtp.auth.mechanisms","NTLM");
              props.put("mail.smtp.auth.ntlm.domain","MyDomain");
  
  
              Session session = Session.getInstance(props,new MyAuthenticator(username,password));
  
              try {
  
                  Message message = new MimeMessage(session);
                  message.setFrom(new InternetAddress("from_adress@MyDomain.com"));
                  message.setRecipients(Message.RecipientType.TO,
                      InternetAddress.parse("recipent_adresse"));
                  message.setSubject("Testing Subject");
                  message.setText("Dear Mail Crawler,"
                      + "\n\n No spam to my email, please!");
  
                  Transport.send(message);
  
                  System.out.println("Done");
  
              } catch (MessagingException e) {
                  throw new RuntimeException(e);
              }
          }
      }
  </code></pre>
  
  <p>and this is my authentificator class :</p>
  
  <pre><code>import javax.mail.Authenticator;
  import javax.mail.PasswordAuthentication;
  
  public class MyAuthenticator extends Authenticator {
  
       String user;
       String pw;
       public MyAuthenticator (String username, String password)
       {
          super();
          this.user = username;
          this.pw = password;
       }
      public PasswordAuthentication getPasswordAuthentication()
      {
         return new PasswordAuthentication(user, pw);
      }
  
  }
  </code></pre>
  
  <p>i use the NTLM mechanism but i get this error :</p>
  
  <pre><code>DEBUG: JavaMail version 1.4.7
  DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
  DEBUG: Tables of loaded providers
  DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]}
  DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]}
  DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
  DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
  DEBUG SMTP: useEhlo true, useAuth true
  DEBUG SMTP: useEhlo true, useAuth true
  DEBUG SMTP: trying to connect to host "echange_server.MyDomain.com", port 25, isSSL false
  220 echange_server.MyDomain.com Microsoft ESMTP MAIL Service ready at Mon, 30 Sep 2013 09:01:08 +0100
  DEBUG SMTP: connected to host "echange_server.MyDomain.com", port: 25
  
  EHLO host.MyDomain.com
  250-echange_server.MyDomain.com Hello [xx.xx.xx.xx]
  250-SIZE
  250-PIPELINING
  250-DSN
  250-ENHANCEDSTATUSCODES
  250-STARTTLS
  250-X-ANONYMOUSTLS
  250-AUTH NTLM
  250-X-EXPS GSSAPI NTLM
  250-8BITMIME
  250-BINARYMIME
  250-CHUNKING
  250-XEXCH50
  250-XRDST
  250 XSHADOW
  DEBUG SMTP: Found extension "SIZE", arg ""
  DEBUG SMTP: Found extension "PIPELINING", arg ""
  DEBUG SMTP: Found extension "DSN", arg ""
  DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
  DEBUG SMTP: Found extension "STARTTLS", arg ""
  DEBUG SMTP: Found extension "X-ANONYMOUSTLS", arg ""
  DEBUG SMTP: Found extension "AUTH", arg "NTLM"
  DEBUG SMTP: Found extension "X-EXPS", arg "GSSAPI NTLM"
  DEBUG SMTP: Found extension "8BITMIME", arg ""
  DEBUG SMTP: Found extension "BINARYMIME", arg ""
  DEBUG SMTP: Found extension "CHUNKING", arg ""
  DEBUG SMTP: Found extension "XEXCH50", arg ""
  DEBUG SMTP: Found extension "XRDST", arg ""
  DEBUG SMTP: Found extension "XSHADOW", arg ""
  DEBUG SMTP: Attempt to authenticate using mechanisms: NTLM
  DEBUG SMTP: AUTH NTLM failed
  
  Exception in thread "main" java.lang.RuntimeException: javax.mail.AuthenticationFailedException: 250-exchange_host.MyDomain.com Hello [xx.xx.xx.xx]
  
      at testPakcage.Main.main(Main.java:51)
  Caused by: javax.mail.AuthenticationFailedException: 250-exchange_host.MyDomain.com Hello [xx.xx.xx.xx]
  </code></pre>
  
  <p>please help me,i past several day to search solution but i found nothing</p>