E-Mail-Template-engine
Bin ich über das schreiben einer einfachen E-Mail-manager für den Standort an dem ich arbeite (asp.net/c#); die Seite sendet aus verschiedenen E-Mails, wie Sie auf Konto erstellen, news, einige benutzerdefinierte Aktionen, etc. So wird es einige E-Mail-Vorlagen mit Platzhaltern wie [$FirstName], die durch konkrete Werte ersetzt werden. Ziemlich standard Sachen. Ich Frage mich nur, wenn jemand beraten kann, die auf vorhandenen code wieder, ich brauche etwas, das sehr einfach, ohne viele Glocken/Pfeifen, und natürlich auch mit source-code (und kostenlos)
Irgendwelche Ideen/Kommentare werden sehr geschätzt!
Dank,
Andrej
- Einige tests mit RazorEngin,LENKER und SharpTal : stackoverflow.com/questions/340095/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere threads auf Stack Overflow über das schon, aber ich landete Rollen sich meine Lösung von verschiedenen Vorschläge, die es gibt.
Habe ich dieses FormatWith Erweiterung Methode zu kümmern, einfaches templating und dann machte ich eine einfache E-Mail Basisklasse kümmern sich um Allgemeine Aufgaben, wie das ziehen in eine geeignete Vorlage und ersetzen alle notwendigen Infos, sowie die Send () - Methode.
Alle E-Mails, die ich senden müssen, haben Ihre eigene Unterklasse Ableitung von der Basis, und definieren Sie die Dinge, die für Sie einzigartig, wie TemplateText, BindingData, Empfänger und Betreff. Dass Sie jeweils in Ihrer eigenen Klasse macht Sie sehr leicht unit-Tests idependently der rest der app.
So, dass Ihre app können diese E-Mail-Klassen ohne wirklich hilfsbereit, was man es verwendet, es ist auch eine gute Idee, um eine Schnittstelle implementieren, mit der alle freigegebenen Methoden (die einzige, die ich kümmerte, war die Send () -), so dann Ihre app zugreifen können, was auch immer E-Klasse, die es will und die Arbeit mit Ihnen in der gleichen Weise. Vielleicht generics verwendet werden könnten, auch, aber das war es, was ich kam mit.
Edit: Es gibt noch viele weitere Vorschläge hier: Kann ich HTML/E-Mail-Vorlagen mit ASP.NET?
Ich immer Folgendes tun. Vorlagen = text-string mit
{#}
Platzhalter. Um eine Vorlage zu verwenden, die ich laden Sie die Zeichenfolge (von was auch immer speichern) und dann rufen Siestring.Format(template,param1,param2..)
Einfach und funktioniert gut. Wenn Sie etwas stärker ist, die Sie verschieben können, um einen Rahmen von einer Art, aber string.format hat immer gut für mich gearbeitet.
Hinweis
Alison R-link nimmt diese Methode, um den nächsten Schritt mit 3.5 anonyme Typen mit großer Wirkung. Wenn Sie 3.5 empfehle ich die FormatWith es (ich werde) ansonsten ist dieser Weg gut funktioniert.
Gerade dies selbst getan, es gibt einige großartige Informationen unter: Senden von E-Mails-Sowohl in HTML-und Plain Text. Beste Teil ist, Sie brauchen nicht alles andere als .NET.
Im wesentlichen erstellen Sie eine HTML-Seite (AKA Ihr-formatierte e-mail) mit den tags, die Sie ersetzen möchten (in dem Fall von dieser Lösung, tags, im format: <%TAGNAME%>). Dann nutzen Sie die Informationen auf der oben genannten website zu erstellen, die eine mail-Vorlage mit tags gefüllt mit den entsprechenden Daten, und die Injektionen gemacht werden, die Sie in Ihre HTML-Vorlage. Dann verwenden Sie einfach die SMTP-Klassen integriert .NET und schicken Sie die mail auf Ihrem Weg. Es ist sehr einfach und unkompliziert.
Lassen Sie mich wissen, wenn Sie weitere Fragen haben. Hoffe, das hilft!
Wenn Sie mit ASP.NET Sie bereits eine Template-engine zur Verfügung. Erstellen Sie einfach ein ASP.NET Seite, dass die Ergebnisse, die für Sie (mit was auch immer-controls, etc, etc), die Sie wollen, ebenso wie die Einstellung der ContentType der Antwort auf den entsprechenden Typ (entweder text oder HTML, je nach E-Mail-format)
Stellen Sie sicher, dass diese url ist nicht öffentlich verfügbar.
Dann in Ihren code, erstellen Sie eine HttpWebRequest/HttpWebResponse oder WebClient und Hole dann die URL und den Inhalt. Die ASP.NET engine verarbeitet die Anfrage und senden Sie Ihre formatierte Ergebnisse, die Sie dann per E-Mail.
Wenn Sie wollen etwas einfacher, warum nicht ein RegEx-und-match? Nur stellen Sie sicher, Sie haben eine ziemlich eindeutige Bezeichner für die Felder (Präfix und suffix, die Sie garantiert nie verwendet werden, oder Sie kann zumindest schreiben Sie eine escape-Sequenz, die für es) und man konnte leicht verwenden Sie die Match-Methode zu tun, ersetzen.
Das einzige "Manko" an der RegEx-Ansatz ist, dass, wenn Sie zu tun haben embedded-templating, dann ist zu verlangen, dass Sie ein wenig mehr Arbeit.