如何使用剃刀引擎从模板发送电子邮件



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

这就是我所拥有的

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

从 MVC 控制器,很容易从 Razor 视图(CSHTML 文件)生成 HTML。

我已经成功地使用接受答案中的代码将视图呈现为字符串,并将其放入基本控制器中。

// 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();
   }
}

Mailzory项目是发送具有Razor模板的电子邮件的便捷选择。Mailzory在幕后使用RazorEngine。

// template path
var viewPath = Path.Combine("Views/Emails", "hello.cshtml");
// read the content of template and pass it to the Email constructor
var template = File.ReadAllText(viewPath);
var email = new Email(template);
// set ViewBag properties
email.ViewBag.Name = "Johnny";
email.ViewBag.Content = "Mailzory Is Funny";
// send email
var task = email.SendAsync("mailzory@outlook.com", "subject");
task.Wait()

该项目托管在Github。还有一个可用于Mailzory的nuget包。

最新更新