This is one of those ‘works locally, doesn’t work on the server’ posts.
I have a simple contact form that sends an email. On the server, I get the following exception:
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]
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.
Here’s the source 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);
}
}
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
A low security level doesn’t allow you to specify the smtp port. Default is port 25. Although my ISP specifies port 587, I can use port 25 and it works fine.
Method 2
I had a similar problem I simply added the following code in the Web.config file and it worked for me
<configuration>
<system.web>
.....
<trust level="Full" originUrl=""/>
</system.web>
</configuration>
I was facing this issue on my Shared Hosting Server. The error was coming up while trying to create an object of SMTP client and then assigning it a port number. Increasing trust level worked pretty well for me. I just elaborated details to make sure it helps some one else too. really appreciate the solution ! As I was unable to comment hence just thanked here the original author.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0