asp.net-mvc - 如何使用 RazorEngine 从模板发送电子邮件

标签 asp.net-mvc razor html-email razorengine

我正在尝试使用 .cshtml 模板通过 RazorEngine 发送电子邮件。 their site 上的文档展示如何将它与包含 razor 语法的字符串一起使用。我该如何通过加载 .cshtml 文件来使用它?

这就是我所拥有的

    string templatePath = "~/Templates/InitialApplicationBody.cshtml";
    var result = Engine.Razor.RunCompile(templatePath, "templateKey", null, viewModel);

最佳答案

从 MVC Controller 中,可以轻松地从 Razor View (CSHTML 文件)生成 HTML。

我已成功使用 Render a view as a string 已接受答案中的代码,将其放入基本 Controller 中。

// Renders a Razor view, returning the HTML as a string
protected string RenderRazorViewToString<T>(string viewName, T model) where T : class
{
    ViewData.Model = model;

    using (var sw = new StringWriter())
    {
      var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,
                                                           viewName);

      var viewContext = new ViewContext(ControllerContext, viewResult.View,
                                        ViewData, TempData, sw);

      viewResult.View.Render(viewContext, sw);
      viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);

      return sw.GetStringBuilder().ToString();
   }
}

关于asp.net-mvc - 如何使用 RazorEngine 从模板发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37707052/

相关文章:

gmail - Gmail 中的 HTML 电子邮件 - CSS 样式属性已删除

javascript - 如何将 json POST 数据作为对象传递给 Web API 方法?

c# - ScriptIgnore 导致其他属性,例如 StringLength 被忽略

asp.net-mvc - 无法播种用户和角色

javascript - 在 JavaScript 中使用 Razor 语法

javascript - 如何访问正在循环的表的 <td> 元素内的元素?

asp.net-mvc - 在用户内容上显示可用操作的干净/干燥方式是什么?

html - html 中的中心嵌套表格

html - 为什么电子邮件客户端不使用现代渲染引擎?

javascript - 在 MVC Controller 中获取 img