title: Error in sending email through SMTP
body: <p>I'm trying to send an email through Java Code using gmail as the SMTP. But getting an exception as below. Can you pls let me know why is it not able to find the gmail host. I'm working in office network, not sure if some firewall is stopping it from sending. If yes, what is the way out ?</p>
  
  <pre><code>Exception in thread "main" com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 586; timeout -1;
    nested exception is:
      java.net.UnknownHostException: smtp.gmail.com
      at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2053)
      at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)
      at javax.mail.Service.connect(Service.java:364)
      at javax.mail.Service.connect(Service.java:245)
      at mail.JavaEmail.sendEmail(JavaEmail.java:72)
      at mail.JavaEmail.main(JavaEmail.java:22)
  Caused by: java.net.UnknownHostException: smtp.gmail.com
  </code></pre>
  
  <p>Java Source Code :</p>
  
  <pre><code>package mail;
  
  import java.util.Properties;
  
  import javax.mail.Message;
  import javax.mail.MessagingException;
  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 JavaEmail
  {
      Session mailSession;
  
      public static void main(String args[]) throws AddressException,    MessagingException
      {
          JavaEmail javaEmail = new JavaEmail();
          javaEmail.setMailServerProperties();
          javaEmail.draftEmailMessage();
          javaEmail.sendEmail();
      }
  
      private void setMailServerProperties()
      {
          Properties emailProperties = System.getProperties();
          emailProperties.put("mail.smtp.port", "586");
          emailProperties.put("mail.smtp.auth", "true");
          emailProperties.put("mail.smtp.starttls.enable", "true");
          mailSession = Session.getDefaultInstance(emailProperties, null);
      }
  
      private MimeMessage draftEmailMessage() throws AddressException, MessagingException
      {
          String[] toEmails = { "to-mail@gmail.com" };
          String emailSubject = "Test email subject";
          String emailBody = "This is an email sent by JAVA Code";
          MimeMessage emailMessage = new MimeMessage(mailSession);
          /**
           * Set the mail recipients
           * */
          for (int i = 0; i &lt; toEmails.length; i++)
          {
              emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmails[i]));
          }
          emailMessage.setSubject(emailSubject);
          /**
           * If sending HTML mail
           * */
          emailMessage.setContent(emailBody, "text/html");
          /**
           * If sending only text mail
           * */
          //emailMessage.setText(emailBody);// for a text email
          return emailMessage;
      }
  
      private void sendEmail() throws AddressException, MessagingException
      {
          /**
           * Sender's credentials
           * */
      String fromUser = "from-user@gmail.com";
          String fromUserEmailPassword = "*****";
  
          String emailHost = "smtp.gmail.com";
          Transport transport = mailSession.getTransport("smtp");
          transport.connect(emailHost, fromUser, fromUserEmailPassword);
          /**
           * Draft the message
           * */
          MimeMessage emailMessage = draftEmailMessage();
          /**
           * Send the mail
           * */
          transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
          transport.close();
          System.out.println("Email sent successfully.");
      }
  }
  </code></pre>