我是ASP.NET Core的新手,我正在尝试根据模板制作电子邮件。 我想要包含标签,然后用控制器中的特定数据替换它们。
我找到了一个名为razorengine的引擎,它正好符合我的要求,但它与.netcoreapp1.1不兼容。我还可以使用其他替代方案吗?
我正在使用Mailkit btw。
更新:
我发现了一个名为DotLiquid的替代方案,谢谢!
答案 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);
}