剃刀视图作为电子邮件模板

我正在mvc3中创build一个电子邮件引擎,我正在尝试使用razor视图作为电子邮件模板。 我听说这是可能的,但我还没有find任何有关它的信息。

你可以使用http://razorengine.codeplex.com/来实现这一点。; 它允许你在mvc之外使用razor。

string Email = "Hello @Model.Name! Welcome to Razor!"; string EmailBody = Razor.Parse(Email, new { Name = "World" }); 

实现起来很简单,可以在http://nuget.codeplex.com/上find,以便轻松整合到您的项目中。;

您可以使用模板文件作为剃刀电子邮件正文模板。 您可以使用您select的扩展名,因为您可以在.Net中以文本forms加载文件。 我们使用下面的例子来说明模板:

 Hello @Model.Name, Welcome to @Model.SiteName! Regards, Site Admins 

将该文件保存为“WelcomeMessage.cshtml”,“WelcomeMessage.template”等。在解决scheme资源pipe理器中select文件,在属性窗口中select“复制到输出目录”并select“始终复制”。 唯一的缺点是这个模板必须伴随应用程序,不能作为一个类来编译。

现在我们要parsing它作为一个string分配给邮件消息体。 剃刀将采用模板和模型类,parsing它们,然后返回具有必要值的string。 在你的应用程序中,你需要添加可以在NuGet中find的RazorEngine包。 下面是一个简短的代码示例来说明用法:

 using System.IO; using RazorEngine; // ... MyModel model = new MyModel { Name = "User", SiteName = "Example.com" }; string template = File.OpenText("WelcomeMessage.template").ReadToEnd(); string message = Razor.Parse(template, model); 

它与其他答案类似,但显示了从文本文件加载模板的快速方法。

你也许应该考虑MvcMailer 。 RazorEngine(非常好),如果你还没有使用MVC(我在webforms上下文中已经成功地使用了它),但是如果你有MVC的话,你也可以利用它。

(通过Hanselmen的第2周的NuGet包 )

您也可以使用NuGet的Essential Mail:Razor软件包。 它是通过RazorEngine构build的,为电子邮件渲染提供了简单的界面。

电子邮件消息模板看起来像

 @inherits Essential.Templating.Razor.Email.EmailTemplate @using System.Net; @{ From = new MailAddress("example@email.com"); Subject = "Email Subject"; } @section Html { <html> <head> <title>Example</title> </head> <body> <h1>HTML part of the email</h1> </body> </html> } @section Text { Text part of the email. } 

阅读更多关于GitHub: https : //github.com/smolyakoff/essential-templating/wiki/Email-Template-with-Razor

Mailzor

与@thiagoleite提到的相关的是,我把Kazi Manzur Ra​​shid的想法(经过许可),并且扩展到对我想要如何使用它更友好。

所以看看github项目'mailzor'

它也在Nuget.org/packages/mailzor上