namespace BulkArchiveMailer.Core { /// /// One configured mail template: which files it applies to (by file /// name suffix, "{login}_{FileSuffix}.7z"), plus its Subject/BodyHtml. /// Replaces the old fixed pair of named templates (ssh_access / /// config_update) with an arbitrary, operator-editable list - /// AppSettingsData.Templates now holds a List<MailTemplateDefinition> /// instead of two hard-coded slots. /// /// FileSuffix is the only identifier a template needs: it must be /// non-empty and unique (case-insensitively) among all configured /// templates for ArchiveScanner's suffix-to-template lookup to be /// unambiguous. Enforcing that (non-empty + unique) is SettingsForm's /// job at save time, not this class's - a plain data holder has no /// validation of its own. /// public sealed class MailTemplateDefinition { public string DisplayName { get; set; } = ""; /// /// Suffix of the file name this template renders for: matches /// files named "{login}_{FileSuffix}.7z" (case-insensitive; see /// FilenameParser/ArchiveScanner). Must be non-empty and unique /// among all configured templates - see class remarks. /// public string FileSuffix { get; set; } = ""; public string Subject { get; set; } = ""; public string BodyHtml { get; set; } = ""; } }