这是那种“本地可以工作,但在服务器上不行”的帖子之一。
我有一个简单的联系表单,可以发送电子邮件。但在服务器上,我得到了以下异常:
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]
主机无法为我提供适用于从Web服务器发送SMTP消息的代码或SMTP客户端。因此,我需要找到一种替代方法来发送它们,以使我的Web服务器满足严格的安全策略。这是源代码:
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);
}
}