title: SecurityException: Request for the permission of type 'System.Net.Mail.SmtpPermission'
body: <p>This is one of those 'works locally, doesn't work on the server' posts.</p>
  
  <p>I have a simple contact form that sends an email. On the server, I get the following exception:</p>
  
  <pre><code> Security Exception
  Description: The application attempted to perform an operation not allowed
  by the security policy.  To grant this application the required permission
  please contact your system administrator or change the application's trust
  level in the configuration file.
  
  Exception Details: System.Security.SecurityException: Request for the
  permission of type 'System.Net.Mail.SmtpPermission, System, Version=4.0.0.0, 
  Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
  
  Source Error:
  [No relevant source lines]
  </code></pre>
  
  <p>The host was unable to give me code or an SMTP client that will work for sending SMTP messages from the web server. So I need to find an alternate way to send them that will make my web server happy with a constrictive security policy.</p>
  
  <p>Here's the source code:</p>
  
  <pre><code>private void SendMessage (string returnAddress, string textSubject, string messageText)
      {
          config config = new config();
  
          System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
  
          message.To.Add(config.toEmailAddress);
          message.Subject = "Website Contact Form Message: " + textSubject;
          message.From = new System.Net.Mail.MailAddress(returnAddress);
          message.Body = messageText;
  
          message.IsBodyHtml = false;
  
          System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.naturalcarpetcompany.com");
          smtp.Credentials = new System.Net.NetworkCredential(config.fromEmailAddress, config.fromEmailPassword);
          smtp.Port = 587;
  
          try
          {
              smtp.Send(message);
          }
          catch (Exception ex)
          {
              Exception ex2 = ex;
              string errorMessage = string.Empty;
              while (ex2 != null)
              {
                  errorMessage += ex2.ToString();
                  ex2 = ex2.InnerException;
              }
              HttpContext.Current.Response.Write(errorMessage);
          }
      }
  </code></pre>