Frage

Beim Erstellen eines MailMessage -Objekts durch Aufrufen der "CreateMailMessage" -Methode in der Maildefinitionsklasse ist der dritte Parameter ein Objekt vom Typ System.Web.Ui.Control.

MailDefinition mail = new MailDefinition();

ListDictionary replacements = new ListDictionary();
replacements.Add("<%myname%>", "John");

mail.BodyFileName = "~/App_Data/Emails/SomeEmail.txt";
mail.From = "me@example.com";
mail.Subject = "Hello";

MailMessage message = mail.CreateMailMessage("example@example.com,", replacements, );

Warum ist das so?
Und was soll ich stattdessen übergeben, wenn ich kein Objekt dieser Art habe? Nur ein neues Kontrollobjekt?

Control control = new Control();

AKTUALISIEREN

Ich würde es wärmstens empfehlen Rasierer E -Mail -Vorlagen erstellen. Es hat großartige Syntax, funktioniert großartig und hat keine seltsamen Abhängigkeiten!

War es hilfreich?

Lösung

Normalerweise passieren Sie einfach nur this als Kontrolle.

MailMessage message = mail.CreateMailMessage("example@example.com,", replacements, this);

Wie aus dem Grund warum, Hier ist, was MSDN sagt:

Der Parameter des Eigentümers gibt an, welche Kontrolle der übergeordnete Steuerelement der MailDefinition -Steuerung ist. Es bestimmt, welches Verzeichnis nach der in der BodyFileName -Eigenschaft angegebenen Textdatei gesucht werden soll.

Andere Tipps

Das CreateMailMessage Funktion verwendet intern die angegebene Kontrolle sein ApprelativTePlateSourcedirectory Eigentum und seines Datei öffnen Methode zum Lesen des Inhalts des Körpers (angegeben in der Bodyfilename Eigentum des Maildefinition).

Scheint für mich schlechtes Design und unnötige enge Kopplung zu sein.

Sie können dies auch einfach tun:

MailMessage message = this.Mail.CreateMailMessage("no-reply@example.com", dictionary, new System.Web.UI.Control());

Ich habe benutzt new LiteralControl() Für den 3. Parameter, weil meine Nachrichten aus einem Workflow gesendet werden. Es klappt. Aber ich habe keine Antwort auf "Warum".

Es hört sich so an, als müssten Sie die MailDefinitionsklasse möglicherweise überhaupt nicht verwenden, wenn Sie nicht an Steuerelemente bindend sind. Um einfach eine E -Mail über SMTP zu senden, sollten Sie ein System.net.mail.smtpclient mit einem System.net.mail.mailMessage verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top