using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace OFBButte.Application.Email { public abstract class EmailMessage { public virtual string To { get; set; } public virtual string From { get; set; } = "donotreply@ofbbutte.com"; public virtual string Subject { get; set; } public virtual string Body { get; set; } public abstract string TemplateName { get; set; } public void SetBodyFromTemplate(bool isTest = true) { string baseHtml = System.IO.File.ReadAllText($@"Email\Templates\base.html"); string template = System.IO.File.ReadAllText($@"Email\Templates\{TemplateName}.html"); baseHtml = baseHtml.Replace("{{TEST}}", isTest ? "THIS IS A TEST" : ""); template = baseHtml.Replace("{{CONTENT}}", template); var props = GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public).ToDictionary(p => p.Name, p => p.GetValue(this)?.ToString() ?? ""); foreach (var property in props) { template = template.Replace($"{{{{{property.Key}}}}}", property.Value); } Body = template; } } }