title: Why does javamail fail with an authentication Exception?
body: <pre><code>package com.bcs;
  import java.util.Properties;
  import javax.mail.Message;
  import javax.mail.MessagingException;
  import javax.mail.Session;
  import javax.mail.Transport;
  import javax.mail.internet.InternetAddress;
  import javax.mail.internet.MimeMessage;
  
  public class SendMailTLS {
  
      public static void main(String[] args) {
          String host = "smtp.gmail.com";
          int port = 587;
          String username = "foo@gmail.com";
          String password = "bar";
  
          Properties props = new Properties();
          props.put("mail.smtp.auth", "true");
          props.put("mail.smtp.starttls.enable", "true");
  
          Session session = Session.getInstance(props);
  
          try {
              Message message = new MimeMessage(session);
              message.setFrom(new InternetAddress(""));
              message.setRecipients(Message.RecipientType.TO,
                  InternetAddress.parse(""));
              message.setSubject("Testing Subject");
              message.setText("Dear Mail Crawler," +
                      "\n\n No spam to my email, please!");
  
              Transport transport = session.getTransport("smtp");
              transport.connect(host, port, username, password);
              Transport.send(message);
  
              System.out.println("Done");
  
          } catch (MessagingException e) {
              throw new RuntimeException(e);
          }
      }
  }
  </code></pre>
  
  <p>I have given all the necessary inputs . But still it fails with</p>
  
  <pre><code>Exception in thread "main" java.lang.RuntimeException: javax.mail.AuthenticationFailedException: failed to connect, no password specified?
      at com.bcs.SendMailTLS.main(SendMailTLS.java:43)
  Caused by: javax.mail.AuthenticationFailedException: failed to connect, no password specified?
      at javax.mail.Service.connect(Service.java:329)
      at javax.mail.Service.connect(Service.java:176)
      at javax.mail.Service.connect(Service.java:125)
      at javax.mail.Transport.send0(Transport.java:194)
      at javax.mail.Transport.send(Transport.java:124)
      at com.bcs.SendMailTLS.main(SendMailTLS.java:38)
  </code></pre>
  
  <p>I am new to java mail.Any help would be greatly appreciated.</p>