title: "An attempt was made to access a socket in a way forbidden by its access permissions" while using SMTP
body: <p>I am trying to send an SMTP email when certain values in database crosses its threshold value.</p>
  
  <p>I have already allowed ports 25,587 and 465 in the Windows firewall and disabled the option of preventing mass mail in the Antivirus. The code I am using is given below</p>
  
  <pre><code>using System.Net;
  using System.Net.Mail;
  using System.Net.Security;
  using System.Security.Cryptography.X509Certificates;
  
   MailMessage mailMsg = new MailMessage();
          mailMsg.To.Add("to@domain.com");
          // From
          MailAddress mailAddress = new MailAddress("from@domain.com");
          mailMsg.From = mailAddress;
  
  
          // Subject and Body
          mailMsg.Subject = "MCAS Alert";
          mailMsg.Body = "Parameter out of range";
  
  
          SmtpClient smtpClient = new SmtpClient("smtp.servername.com", 25);
          smtpClient.UseDefaultCredentials = false;
          smtpClient.Timeout = 30000;
          System.Net.NetworkCredential credentials =
             new System.Net.NetworkCredential("username", "passwrod");
          smtpClient.Credentials = credentials;
          smtpClient.EnableSsl = true;
          //ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
          smtpClient.Send(mailMsg);
  </code></pre>
  
  <p><strong>Stack Trace</strong></p>
  
  <pre><code>[SocketException (0x271d): An attempt was made to access a socket in a way forbidden by its access permissions xx.xx.xx.xx:25]
     System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) +208
     System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket&amp; socket, IPAddress&amp; address, ConnectSocketState state, IAsyncResult asyncResult, Exception&amp; exception) +464
  
  [WebException: Unable to connect to the remote server]
     System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress&amp; address, Socket&amp; abortSocket, Socket&amp; abortSocket6) +6486360
     System.Net.PooledStream.Activate(Object owningObject, Boolean async, GeneralAsyncDelegate asyncCallback) +307
     System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback) +19
     System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout) +324
     System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint) +141
     System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint) +170
     System.Net.Mail.SmtpClient.GetConnection() +44
     System.Net.Mail.SmtpClient.Send(MailMessage message) +1554
  
  [SmtpException: Failure sending mail.]
     System.Net.Mail.SmtpClient.Send(MailMessage message) +1906
     Admin_Alert.SMTPAuth() in c:\Users\spandya\Documents\Visual Studio 2012\WebSites\WebSite3\Admin\Alert.aspx.cs:61
     Admin_Alert.Page_Load(Object sender, EventArgs e) in c:\Users\spandya\Documents\Visual Studio 2012\WebSites\WebSite3\Admin\Alert.aspx.cs:22
     System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
     System.Web.UI.Control.OnLoad(EventArgs e) +92
     System.Web.UI.Control.LoadRecursive() +54
     System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772
  </code></pre>
  
  <p>What else I am missing here? Firewall inbound rules are there for these specific port addresses.</p>