title: Finding the exact cause for the exception - System.Net.Sockets.SocketException
body: <p>I tried to send a mail to an SMTP mail server using the code given below. But, I am getting an error - </p>
  
  <pre><code>Error: System.Reflection.TargetInvocationException: Exception has 
  been thrown by the target of an invocation. ---&gt; System.Net.Mail.SmtpException:
  Failure sending mail. ---&gt; System.Net.WebException: Unable to connect to
  the remote server ---&gt; System.Net.Sockets.SocketException: A connection 
  attempt failed because the connected party did not properly respond after 
  a period of time, or established connection failed because connected host 
  has failed to respond 123.456.789:587
  at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, 
  SocketAddress socketAddress)
  at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, 
  Socket s4, Socket s6, Socket&amp; socket, IPAddress&amp; address, ConnectSocketState 
  state, IAsyncResult asyncResult, Int32 timeout, Exception&amp; exception)
  </code></pre>
  
  <p>This exception tells me the possible list of causes - A connection 
  attempt failed because the connected party did not properly respond after 
  a period of time, or established connection failed because connected host 
  has failed to respond 123.456.789:587</p>
  
  <p>But it does not tell me exactly what is the cause - port number, wrong username, password or something else. How do I find out what is the exact cause.</p>
  
  <p>Here is the code I used  - 
  <a href="https://stackoverflow.com/questions/2825950/sending-email-with-attachments-from-c-attachments-arrive-as-part-1-2-in-thunde">Sending email with attachments from C#, attachments arrive as Part 1.2 in Thunderbird</a></p>
  
  <pre><code>using System.Net;
  using System.Net.Mail;
  
  public void email_send()
  {
      MailMessage mail = new MailMessage();
      SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
      mail.From = new MailAddress("your mail@gmail.com");
      mail.To.Add("to_mail@gmail.com");
      mail.Subject = "Test Mail - 1";
      mail.Body = "mail with attachment";
  
      System.Net.Mail.Attachment attachment;
      attachment = new System.Net.Mail.Attachment("c:/textfile.txt");
      mail.Attachments.Add(attachment);
  
      SmtpServer.Port = 587;
      SmtpServer.Credentials = new System.Net.NetworkCredential("your 
      mail@gmail.com", "your password");
      SmtpServer.EnableSsl = true;
  
      SmtpServer.Send(mail);
  
  }
  </code></pre>