You can use Razor templates instead of default templates ("{{" and "}}") for email notification content.


Email.Razor package is available on NuGet.
dotnet add package Structr.Email.Razor


Setup services:
services.AddEmail("[email protected]", options => {
options.TemplateRootPath = "C:\\Templates"; // Important to configure this option when using email templates.
.AddSmtpClient(host: "", port: 25)
Important: Be sure that you configured TemplateRootPath option. It's an absolute path to root directory with email notification templates.
Example of using static template file:
// Define Model class for template.
class Recipient
public string Name { get; set; }
// Define static template file
class RecipientEmailTemplateFileMessage : EmailTemplateMessage<Recipient>
public override string TemplatePath => "RecipientTemplate.cshtml"; // Absolute path is "C:\Templates\RecipientTemplate.cshtml".
public RecipientEmailTemplateFileMessage(string to, Recipient model)
: base(new EmailAddress(to), model)
// Create instance of Model class.
var model = new Recipient { Name = "Peter Parker" };
// Create message
var message = new RecipientEmailTemplateFileMessage("[email protected]", model);
// Send email notification generated via template from "C:\Templates\RecipientTemplate.cshtml".
await _emailSender.SendEmailAsync(message);