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:

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)