MVC电子邮件模板引擎.netcoreapp1.1

时间:2017-05-19 08:54:26

标签: asp.net-mvc asp.net-core asp.net-core-mvc email-templates mailkit

我是ASP.NET Core的新手,我正在尝试根据模板制作电子邮件。 我想要包含标签,然后用控制器中的特定数据替换它们。

我找到了一个名为razorengine的引擎,它正好符合我的要求,但它与.netcoreapp1.1不兼容。我还可以使用其他替代方案吗?

我正在使用Mailkit btw。

更新:

我发现了一个名为DotLiquid的替代方案,谢谢!

2 个答案:

答案 0 :(得分:0)

您也可以使用RazorLight,它允许使用内置的Razor引擎并使用.Net Core运行。

答案 1 :(得分:0)

您不需要为此添加额外的库。

只需创建一个位于您的项目范围内的html文件并标记您的占位符,例如通过{{ ... }}

例如,创建文件wwwroot/emails/welcome.html

Dear {{user}},

<p>Have fun with this page.</p>
<p>Please click <a href="{{link}}">here</a> to activate your account.</p>

Best wishes

现在要执行控制器操作:

public async Task<IActionResult> SendSomeEmailTo(userId)
{
  string body;
  using (var file = System.IO.File.OpenText("wwwroot/emails/welcome.html"))  
  {
    body = file.ReadToEnd();
  }

  var user = this.userManager.findById(userId);
  // replace your placeholders here
  body = body
    .Replace("{{user}}", user.getFullName())
    .Replace("{{link}}", "www.foo.bar");

  // use the email body in your email service of your choice
  await sender.SendEmailAsync(user.Email, "Welcome", body);
}