抛出:SecurityException:请求类型“System.Net.Mail.SmtpPerm

2019-06-27 03:17发布

这是其中的一个“本地工作,在服务器不工作”的帖子。

我有发送电子邮件的简单联系表单。 在服务器上,我得到以下异常:

 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]

主机无法给我的代码或SMTP客户端,将用于从Web服务器发送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);
        }
    }

Answer 1:

低安全级别不允许您指定的SMTP端口。 默认端口号为25。虽然我的ISP指定端口587,我可以使用端口25和正常工作。



Answer 2:

我有一个类似的问题,我只是在Web.config文件中添加以下代码,它为我工作

<configuration>
  <system.web>
    .....
    <trust level="Full" originUrl=""/>
  </system.web>
</configuration>

我面临着我的共享托管服务器在这个问题上。 错误就要到了,而试图创建SMTP客户端的一个对象,然后分配一个端口号。 增加信任级别的工作很适合我。 我只是阐述细节,以确保它可以帮助别的人了。 真正体会到了解决方案! 正如我无法由此作出评论只是在这里感谢原作者。



文章来源: SecurityException: Request for the permission of type 'System.Net.Mail.SmtpPermission'
标签: c# asp.net smtp