我的控制器中有一个ActionResult,我想发送一封HTML电子邮件,该电子邮件的正文由视图生成。我可以在传递模型时获取视图的结果并避免将其发送到浏览器,而不是在我的控制器中使用2个actionresults方法?
答案 0 :(得分:8)
MvcMailer 是一个很棒的小项目,支持使用MVC视图生成电子邮件。它以NuGet包的形式提供。
为了呈现字符串而不是响应的视图,请使用此代码(relativePath
指向您的视图文件):
var content = string.Empty;
var view = ViewEngines.Engines.FindView(ControllerContext, relativePath, null);
using (var writer = new StringWriter())
{
var context = new ViewContext(ControllerContext, view.View, ViewData, TempData, writer);
view.View.Render(context, writer);
writer.Flush();
content = writer.ToString();
}
答案 1 :(得分:4)
查看开源Postal project它的可用视图NuGet。
Postal允许您使用常规MVC视图创建电子邮件。
Andrew Davey在mvcConf 2上使用Postal进行了Generating email with View Engines的演示
或者,this blog post向您展示了一种简单的方式。