/// <summary> /// Loads a named email template from database and replaces tokens with passed entities, and returns a new email message object with template values /// </summary> /// <param name="templateName"></param> /// <param name="model"></param> /// <returns></returns> private EmailMessage LoadAndProcessTemplate(string templateName, object model = null) { //first load the template from database var template = _emailTemplateService.FirstOrDefault(x => x.TemplateSystemName == templateName); if (template == null) { return(null); } var content = _emailTemplateService.GetProcessedContentTemplate(template); //render the content //expand the routes first content = Expander.ExpandRoutes(content, model); var processedTemplateString = _viewAccountant.RenderView(templateName, content, model); var subjectString = _viewAccountant.RenderView($"{templateName}:Subject", template.Subject, model); var emailAccount = template.EmailAccount; //create a new email message var emailMessage = new EmailMessage() { IsEmailBodyHtml = true, EmailBody = processedTemplateString, EmailAccount = emailAccount, EmailAccountId = emailAccount?.Id ?? 0, Subject = subjectString, OriginalEmailTemplate = template, SendingDate = DateTime.UtcNow, Tos = new List <EmailMessage.UserInfo>() }; return(emailMessage); }