This sample demonstrates how to use Razor engine for email template in ASP.NET Core.
// -------------------------------------------------------------------------
// HomeController.cs
// -------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using RazorLight;
using System.IO;
using CSEmailRazorTemplateNetCore.Models;
// For more information on enabling MVC for empty projects,
// visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace CSEmailRazorTemplateNetCore.Controllers
{
public class HomeController : Controller
{
public string Index()
{
string templatePath = $@"{Directory.GetCurrentDirectory()}\EmailTemplates";
IRazorLightEngine engine = EngineFactory.CreatePhysical(templatePath);
var model = new Notification
{
Name = "Jone",
Title = "Test Email",
Content = "This is a test"
};
string result = engine.Parse("template.cshtml", model);
return result;
}
}
}
// -------------------------------------------------------------------------
// template.cshtml
// -------------------------------------------------------------------------
<h2>Dear @Model.Name, you have a notification.</h2>
<h1>@Model.Title</h1>
<p>@Model.Content</p>
<p>Date:@DateTime.Now</p>
// -------------------------------------------------------------------------
// Notification.cs
// -------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace CSEmailRazorTemplateNetCore.Models
{
public class Notification
{
public string Name { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
}