Laden...

Beim Email Versand kommt eine SmtpPermission/SecurityEception

Erstellt von pepade84 vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.373 Views
P
pepade84 Themenstarter:in
2 Beiträge seit 2017
vor 6 Jahren
Beim Email Versand kommt eine SmtpPermission/SecurityEception

Hallo,

ich habe einen SSRS 2008 R2 Server am laufen, der einen Report drucken soll. Wenn es zu einem Fehler beim Drucken kommt, dann moechte ich gerne eine Email versenden.

Rahmenbedingungen:
Visual Studio 2008
.Net 3.5 Framework

Der Dienst selbst laeuft als BCP-Servcice User ohne Adminrechte.


if (sendEmailOnce)
{
    SendEmail("Email test");
    sendEmailOnce = false;
}

Meine "SendMail"-Methode sieht wie folgt aus:


 public static void SendEmail(string _message)
{
        
    //your code goes here
    string to = "peter@test.de";
    string from = "Reporting@test.de";
    MailMessage message = new MailMessage(from, to);
    message.Subject = "Using the new SMTP client.";
    message.Body = @"Using this new feature, you can send an e-mail message from an application very easily." + System.Environment.NewLine + _message;

    try
    {
        System.Net.Mail.SmtpPermission myMailPermission = new SmtpPermission(PermissionState.Unrestricted);
        myMailPermission.Demand();
        //myMailPermission.AddPermission(SmtpAccess.ConnectToUnrestrictedPort);
        myMailPermission.Assert();
                       
        
        Console.WriteLine("Ausgabe: "  + myMailPermission.Access);
        SmtpClient client = new SmtpClient(MAIL_SERVER_ADDRESS);
        
        client.UseDefaultCredentials = true;
        client.Send(message);

        CodeAccessPermission.RevertAssert();
        
    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception caught in SendMail(): {0}", ex.ToString());
    }

}

Ich erhalte eine SecurityException wie im Anhang. Ich kann auch nicht den User-Kontext wechseln.

Folgendes habe ich nun versucht, aber ich denke als liegt an einer Sicherheitsstufe:*Mailversand *Batch *PowerShell Script *UserContext Switch *Webservice aufrufen *Ins Eventlog schreiben

Egal was ich probiert habe, es kommt immer eine Security Issue 😦

Habt ihr noch eine Idee?!

Grueße,
Peter

16.842 Beiträge seit 2008
vor 6 Jahren

Wie ist die genaue Fehlermeldung? Welche Zeile genau knallt? Das Send?
Stimmt der Default Port 25 oder musst Du evtl. 587 incl. SSL verwenden?
Muss evtl. die DeliveryMethod auf "Network" stehen, was meistens der Fall ist?
Sicher, dass der Mail Servce Default Credentials akzeptiert?

Benutze dafür das Error-BBCode Tag und kein Bild.
[Hinweis] Wie poste ich richtig? Punkt 5 / Punkt 6 😉

Zum Code:

  • Vermeide statische Klassen, diese lassen sich nicht ordentlich testen.
  • Wenn die E-Mail Adresse nicht existiert oder als Absendeadresse ungültig ist (zB Zugriff fehlt), dann knallts halt.
  • Die SmtpClient Klasse muss disposed werden, daher bietet es sich an, diese in ein using() zu packen.
  • Variablen sollten nicht mit einem Underscore beginnen. Das Underscore ist in C# für Felder vorgesehen [Artikel] C#: Richtlinien für die Namensvergabe
P
pepade84 Themenstarter:in
2 Beiträge seit 2017
vor 6 Jahren

Es knallt bei der Zeile

SmtpClient client = new SmtpClient(MAIL_SERVER_ADDRESS);

Auch wenn ich den MailServer herausnehme, dann kommt dennoch die Fehlermeldung.

Ich kann in der "nrssrvpolicy.config" fuer das Modul die Permission auf "FullTrust" setzen, dann funktioniert es, aber dass find ich suboptimal!