SecurityException: запрос на разрешение типа "System.Net.Mail.SmtpPermission"

Это одна из этих "локальных работ", не работает на сообщениях сервера.

У меня есть простая контактная форма, которая отправляет электронное письмо. На сервере появляется следующее исключение:

 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 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-клиент, который будет работать для отправки SMTP-сообщений с веб-сервера. Поэтому мне нужно найти альтернативный способ отправить их, которые сделают мой веб-сервер счастливым с помощью констриктивной политики безопасности.

Здесь исходный код:

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);
        }
    }

Ответ 1

Низкий уровень безопасности не позволяет указать порт smtp. По умолчанию используется порт 25. Хотя мой ISP указывает порт 587, я могу использовать порт 25, и он отлично работает.

Ответ 2

У меня была аналогичная проблема, я просто добавил следующий код в файле Web.config, и это сработало для меня

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

Я столкнулся с этой проблемой на своем общем сервере хостинга. Ошибка при попытке создать объект SMTP-клиента, а затем присвоить ему номер порта. Повышение уровня доверия работало очень хорошо для меня. Я только что разработал детали, чтобы убедиться, что это помогает кому-то еще. действительно ценим решение! Поскольку я не смог прокомментировать, просто поблагодарил здесь оригинального автора.