SecurityException: Anforderung der Berechtigung vom Typ 'System.Net.Mail.SmtpPermission'

Dies ist eine der Funktionen, die lokal ausgeführt werden und nicht für die Beiträge des Servers ausgeführt werden.

Ich habe ein einfaches Kontaktformular, das eine E-Mail sendet. Auf dem Server erhalte ich die folgende Ausnahme:

 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]

Der Host konnte mir keinen Code oder einen SMTP-Client geben, mit dem SMTP-Nachrichten vom Webserver gesendet werden können. Ich muss also eine alternative Methode finden, um sie zu senden, die meinen Webserver mit einer einschränkenden Sicherheitsrichtlinie zufrieden stellt.

Hier ist der Quellcode:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage