Если конкретно по Вашему коду, то
1. Если Вы так жестко прописываете все настройки в коде, то сделайте список настроек. Сначала сам класс
class SmtpSetting
{
public string Host {get; set;}
public string Server {get; set;}
public string Port {get; set;}
}
Потом сам список
var smptSettings = new List<SmptSetting>
{
new SmptSetting
{
Host = "mail.ru",
Server = "smtp.mail.ru",
Port = 587
},
new SmptSetting
{
Host = "yahoo.co",
Server = "smtp.yahoo.co",
Port = 465
},
...
}
И тогда Вам не придется использовать switch
var currentSmtp = smptSettings.FirstOrDefault(x => x.Host == host);
if(currentSmtp != null)
{
var smtp = new SmtpClient(currentSmtp.Server, currentSmtp.Port);
}
Вы сказали, что у Вас есть бд, где храните аккаунты. Храните там же и настройки smtp, в том же виде (Id,Host,Server,Port), тогда из бд Вы будете получать весь список серверов и при изменении списка настроек smtp, не придется лезть в код и пересобирать проект.
2. И для того, чтобы Вы могли вставлять html разметку в письмо, у
MailMessage
есть настройка
IsBodyHtml
, установите ее в true.