Вот настройка:
- У меня есть контроллер уведомлений, который вызывается из планировщика задач 1 раз в день.
- Метод действия извлекает до 300 адресов, перебирает их и использует класс SmtpClient для отправки отдельного электронного письма каждому получателю.
Насколько я могу судить, процесс работает нормально, без исключений... за исключением того, что не все электронные письма доставляются. У кого-нибудь есть идеи о том, что происходит и как решить?
Вот код:
foreach (var emp in division.Users)
{
var fromAddress = "myfromaddress";
var mailServer = "mymailserver";
var toEmail = emp.EmailAddress;
var message = new MailMessage(fromAddress, toEmail)
{
Subject = subject,
Body = "<body style='font:normal 13px tahoma,arial,helvetica;'>" + body + "</body>",
IsBodyHtml = true
};
var client = new SmtpClient(mailServer);
client.Send(message);
}
ОБНОВЛЕНИЕ:
Добавление паузы между отправкой сообщений электронной почты решает проблему. Но почему это работает? И есть ли лучший способ (например, использование Async()), который в равной степени решит проблему лучше???
Обновлен код...
foreach (var emp in division.Users)
{
var fromAddress = "myfromaddress";
var mailServer = "mymailserver";
var toEmail = emp.EmailAddress;
var message = new MailMessage(fromAddress, toEmail)
{
Subject = subject,
Body = "<body style='font:normal 13px tahoma,arial,helvetica;'>" + body + "</body>",
IsBodyHtml = true
};
var client = new SmtpClient(mailServer);
client.Send(message);
Thread.Sleep(3000); // Wait 3s until sending next message
}