Я обновляю старый код для интеграции с SQL. Я работаю в компании, которая иногда рассылает массовые электронные письма, что сильно замедляет работу почтового сервера. Мы хотим поместить электронные письма в базу данных, если они начнут накапливаться. При тестировании некоторых изменений в коде я заметил, что получу электронное письмо, и клиент все еще будет иметь тайм-аут. Это может вызвать проблемы, так как клиент затем установит сообщение электронной почты в очереди, и я получу его позже, когда другая служба попытается очистить базу данных.
SmtpClient emailClient = new SmtpClient(Settings.SmtpServer);
emailClient.Timeout = 100;
bool sent = false;
try
{
using (Impersonate imp = DA.GetImpersonator())
{
emailClient.Send(message);
sent = true;
}
}
catch (SmtpException) { }
finally
{
if (sent)
{
email.IsSent = true;
DA.Save(email);
}
}
Из 10 тестовых запусков, 9 по тайм-ауту, 1 успешный; Я получил 7 писем.