ASP.NET MVC Rendern Zeigen Sie eine Zeichenkette für E-Mail an

7

Ich möchte MVC-Ansichten verwenden, um den Body für eine E-Mail zu erstellen, und ich bin darauf gestoßen ( Ссылка ), aber es scheint nicht mit stark typisierten Ansichten zu funktionieren (ViewContext ist null). Aber ich war nach etwas, das würde eine vollständige Ansicht einschließlich einer Masterpage machen.

Ich dachte, wenn es eine Möglichkeit gäbe, einfach eine Ansicht ohne Umleitung aufzurufen und einfach nur in einen anderen Stream zu schreiben und die E-Mail innerhalb des Controllers zu senden, könnte dies funktionieren, aber ich kann nicht herausfinden, wie ich eine Ansicht aufrufen soll .

Irgendwelche Vorschläge wären großartig!

Vielen Dank im Voraus.

Gifster

    
Andy 12.11.2010, 11:05
quelle

2 Antworten

15

Die Frage wurde bereits gestellt (und beantwortet):

Render-Ansicht als String

Dies ist das Bit, das ich verwende:

%Vor%

Der beste Platz für diese Methode befindet sich in einem Klassenbibliotheksprojekt, auf das Ihr mvc-Projekt verweist. Hauptsächlich deshalb, weil Sie es problemlos in all Ihren Apps wiederverwenden können. Aber auch, weil es weder Anwendungslogik (gehört also nicht in den Controller) noch gehört es in das Modell. Einige Dinge sind nur Dienstprogramme.

Beachten Sie, dass der Parameter viewPath der PHYSICAL PATH der Datei mit der Erweiterung .aspx sein muss. Sie können eine Route nicht verwenden, da die WebFormView-Klasse einen physischen Pfad in ihrem Konstruktor benötigt.

Dadurch wird die vollständige Ansicht gerendert und die Masterseite wird berücksichtigt.

GESUNDHEITSWARNUNG FÜR HTML-E-MAILS:

HTML-E-Mails und die Geräte, auf denen Sie sie lesen, sind noch schwieriger und restriktiver als Websites und Browser. Was in einem funktioniert, wird in einem anderen nicht funktionieren. Also mit HTML-E-Mails müssen Sie wirklich einfach bleiben! Ihre schöne Seite mit Menüs und relativen Bildern und was auch immer, wird nicht in allen E-Mail-Geräten funktionieren. Zum Beispiel muss das Attribut src des Images absolut sein und die Domäne enthalten:

Dies wird nicht funktionieren:

%Vor%

Bit wird dies:

%Vor%

Mit diesen Vorbehalten funktioniert es gut und ich benutze es. Versuchen Sie nicht, ihnen das volle Gimmickry Ihrer Web site zu schicken, weil das nicht funktioniert!

Noch wichtiger:

Alles CSS muss INLINE sein und nur für das grundlegende Styling: Farben, Ränder, Füllung. Aber kein Schweben und Positionieren. CSS-Layouts funktionieren nicht einheitlich auf allen Geräten!

    
awrigley 12.11.2010, 11:10
quelle
4

Sie können dazu das MvcView NuGet-Paket verwenden! Es ist einfach, installieren Sie einfach mit dem Installationspaket MvcMailer und Sie sind fertig! Nutzen Sie die volle Leistung der View-Engine, um Vorlage, Masterseite, Modell anzuzeigen und HTML-E-Mails sauber zu senden!

    
Sohan 12.01.2011 23:33
quelle