Я использую такой движок бритвы:
public class EmailService : IService
{
private readonly ITemplateService templateService;
public EmailService(ITemplateService templateService)
{
if (templateService == null)
{
throw new ArgumentNullException("templateService");
}
this.templateService = templateService;
}
public string GetEmailTemplate(string templateName)
{
if (templateName == null)
{
throw new ArgumentNullException("templateName");
}
Assembly assembly = Assembly.GetAssembly(typeof(EmailTemplate));
Stream stream = assembly.GetManifestResourceStream(typeof(EmailTemplate), "{0}.cshtml".FormatWith(templateName));
string template = stream.ReadFully();
return template;
}
public string GetEmailBody(string templateName, object model = null)
{
if (templateName == null)
{
throw new ArgumentNullException("templateName");
}
string template = GetEmailTemplate(templateName);
string emailBody = templateService.Parse(template, model, null, null);
return emailBody;
}
}
Служба шаблонов, которую я использую, внедряется, хотя это всего лишь реализация по умолчанию:
internal ITemplateService InstanceDefaultTemplateService()
{
ITemplateServiceConfiguration configuration = new TemplateServiceConfiguration();
ITemplateService service = new TemplateService(configuration);
return service;
}
Поскольку в данном случае, в частности, я будут создавать электронные письма из этих шаблонов. Я хочу иметь возможность использовать @section
для темы электронной почты и различных разделов тела электронной почты, используя макет, в котором я указываю стили, общие для всей структуры электронной почты (, которая будет выглядеть как один из MailChimp вероятно ).
Тогда возникает двоякий вопрос:
RazorEngine
?Возможно, я не совсем понял, но я имею в виду библиотекуRazorEngine .