title: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587
body: <p>I have a java application which sends emails. But when i run the code i get the following exception.i have also check the authentication settings and with 485 port no but still error remains. </p>
  
  
  
  <pre class="lang-java prettyprint-override"><code>DEBUG: setDebug: JavaMail version 1.4.4
  DEBUG: getProvider() returning      
  javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems,   
  Inc]
  DEBUG SMTP: useEhlo true, useAuth true
  DEBUG SMTP: useEhlo true, useAuth true
  DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false
  javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 
  587;
  nested exception is:
  java.net.ConnectException: Connection refused: connect
  at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
  at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
  at javax.mail.Service.connect(Service.java:317)
  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 SimpleMailWithAttachment.&lt;init&gt;(SimpleMailWithAttachment.java:46)
  at SimpleMailWithAttachment.main(SimpleMailWithAttachment.java:64)
      Caused by: java.net.ConnectException: Connection refused: connect
  </code></pre>
  
  <p>Here is the code i am using to try to send mail</p>
  
  <pre class="lang-java prettyprint-override"><code>public SimpleMailWithAttachment() {
      Properties props = System.getProperties();
      props.setProperty("mail.smtp.port", "587");
      props.setProperty("mail.smtp.host", "smtp.gmail.com");
      props.setProperty("mail.smtp.starttls.enable", "true");
      props.setProperty("mail.smtp.auth", "true");
  
      Authenticator auth = new MyAuthenticator();
      Session smtpSession = Session.getInstance(props, auth);
      smtpSession.setDebug(true);
  
      MimeMessage message = new MimeMessage(smtpSession);
      try {
          message.setFrom(new InternetAddress(email));
  
          message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
          final String encoding = "UTF-8";
  
          message.setSubject(subject, encoding);
          message.setText(text, encoding);
          Transport.send(message);
      } catch (Exception ex) {
          ex.printStackTrace();
      }
  }
  
  static class MyAuthenticator extends Authenticator {
  
      public PasswordAuthentication getPasswordAuthentication() {
          String username = "******@gmail.com";
          String password = "*****";
          return new PasswordAuthentication(username, password);
  
      }
  }
  </code></pre>