title: Attempting to implement sending an email through SMTP in Java, but get the error "AUTH LOGIN failed"
body: <p>I have been banging my head against my desk for the past couple of days trying to figure out why I keep getting the following errors when attempting to implement Java code for sending an email through my company's Outlook server:</p>
  
  <pre><code>DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2 
  DEBUG SMTP: Using mechanism LOGIN
  DEBUG SMTP: AUTH LOGIN command trace suppressed
  DEBUG SMTP: AUTH LOGIN failed
  Exception in thread "main" javax.mail.AuthenticationFailedException: 535 5.7.0 authentication failed
      at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:932)
      at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:843)
      at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:748)
      at javax.mail.Service.connect(Service.java:388)
      at javax.mail.Service.connect(Service.java:246)
      at javax.mail.Service.connect(Service.java:195)
      at javax.mail.Transport.send0(Transport.java:254)
      at javax.mail.Transport.send(Transport.java:124)
  </code></pre>
  
  <p>Here is the code in question:</p>
  
  <pre><code>import java.util.*;
  import javax.mail.*;
  import javax.mail.internet.*;
  import javax.activation.*;
  
  public class SendEmail3 {
  
      public static void main(String[] args) throws Exception {
  
          Login e = new Login();
  
          String host = "mail.authsmtp.com";
          String port = "465";
          final String userName = e.getEmailUser();
          final String password = e.getEmailPassword();
          String toAddress = "first.last@email";
          String subject = "TEST";
          String message = "This is a test email";
  
          // sets SMTP server properties
          Properties properties = new Properties();
          properties.put("mail.smtp.host", host);
          properties.put("mail.smtp.port", port);
          properties.put("mail.smtp.auth", "true");
          properties.put("mail.debug", "true");
          // properties.put("mail.smtp.starttls.enable", "true");
          properties.put("mail.smtp.ssl.enable", "true");
          properties.put("mail.user", userName);
          properties.put("mail.password", password);
  
          // creates a new session with an authenticator
          Authenticator auth = new Authenticator() {
              public PasswordAuthentication getPasswordAuthentication() {
                  return new PasswordAuthentication(userName, password);
              }
          };
          Session session = Session.getInstance(properties, auth);
  
          // creates a new e-mail message
          Message msg = new MimeMessage(session);
  
          msg.setFrom(new InternetAddress(userName));
          InternetAddress[] toAddresses = { new InternetAddress(toAddress) };
          msg.setRecipients(Message.RecipientType.TO, toAddresses);
          msg.setSubject(subject);
          msg.setSentDate(new Date());
  
          // creates message part
          MimeBodyPart messageBodyPart = new MimeBodyPart();
          messageBodyPart.setContent(message, "text/html");
  
          // creates multi-part
          Multipart multipart = new MimeMultipart();
          multipart.addBodyPart(messageBodyPart);
  
          // sets the multi-part as e-mail's content
          msg.setContent(multipart);
  
          // sends the e-mail
          Transport.send(msg);
  
      }
  
  }
  </code></pre>
  
  <p>The error is triggered at <strong>Transport.send(msg)</strong>. Any guidance will be greatly appreciated.</p>