Mail Templates leicht gemacht mit der Razor Templating Engine

Written on November 28, 2010

Ein Thema, mit dem überwiegend Web-Entwickler immer wieder konfrontiert werden, ist das Implementieren einer Mail-Template-Engine, d.h. das Parsen von Text-Vorlagen, aus denen individualisierte EMails für den Versand vorbereitet werden -- der Klassiker sind Newsletter.

Ebenso häufig, wie das Thema auftaucht, ebenso leidig war die Implementierung bisher.

Mit der parallel zu ASP.NET MVC 3 vorgestellten ViewEngine "Razor", ist es nun um einiges leichter geworden, solche Template-Engines -- z.B. für Mail-Templating -- zu entwickeln.

Eine solche, bereits auf Razor basierende Templating-Engine ist die Razor Templating Engine, die hier von CodePlex heruntergeladen werden kann.

Die Verwendung ist denkbar einfach:

Console.Write("Name: ");
string name =Console.ReadLine();

MailMessage simpleHelloWorldMail = 
    new MailMessage("alex@alexonasp.net", "alex@alexonasp.net");
string mailTemplate = "Hello @Model.Name! Welcome to Razor!";

string body = Razor.Parse(mailTemplate, new { Name = name });
simpleHelloWorldMail.Body = body;

sendMail(simpleHelloWorldMail);
Console.ReadLine();

Auch die Erstellung von HTML-Templates ist möglich:

MailMessage htmlHelloWorldMail =
    new MailMessage("alex@alexonasp.net", "alex@alexonasp.net");

htmlHelloWorldMail.IsBodyHtml = true;
Razor.SetTemplateBaseType(typeof(HtmlTemplateBase<>));

string htmlTemplate = 
    @"<html>
        <head>
            <style type=\""text/css\"">
                body { font-family: Arial; }
            </style>
        </head>
        <body>
            <h1>Hello @Model.Name</h1>
            <p>Welcome to Razor Templating...</p>
        </body>
    </html>";

var model = new { Name = name };

string htmlBody = Razor.Parse(htmlTemplate, model);
htmlHelloWorldMail.Body = htmlBody;

sendMail(htmlHelloWorldMail);

Das Resultat der HTML-Mail:

HTML-Mail

Die Razor Templating Engine ist auch per

Install-Package RazorEngine

via NuGet verfügbar.

Voraussetzung ist .NET Framework 4.0.

Die Beispiel-Solution kann hier heruntergeladen werden:

RazorMailTemplating.zip (91.07 kb)

DotNetKicks-DE Image