В Stack Overflow уже есть несколько тем об этом, но я закончил тем, что катал свое собственное решение из различных предложений.
Я использовал этот FormatWith метод расширения, чтобы позаботиться о простых шаблонах, а затем я создал базовый базовый класс Email для решения общих задач, таких как получение соответствующего шаблона и замена всей необходимой информации , а также предоставив метод Send ().
Все электронные письма, которые мне нужно отправить, имеют собственный подкласс, производный от базы, и определяют уникальные для них вещи, такие как TemplateText, BindingData, Recipients и Subject. Наличие каждого из них в своем классе делает их очень легкими для модульного тестирования независимо от остальной части приложения.
Чтобы ваше приложение могло работать с этими классами электронной почты, не заботясь о том, какой из них он использует, это также хорошая идея - реализовать интерфейс с любыми общими методами (единственным, что меня беспокоило, был Send ()), так что Ваше приложение может создавать экземпляры любого класса электронной почты и работать с ними таким же образом. Возможно, можно использовать и дженерики, но это было то, что я придумал.
IEmail email = new MyEmailClass();
email.Send();
Редактировать: здесь есть еще много предложений: Можно ли настроить шаблоны HTML / электронной почты с ASP.NET?