Вот установка:
- У меня есть контроллер уведомлений, который вызывается из планировщика задач 1x / день
- Метод действия извлекает более 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);
}
UPDATE:
Добавление паузы между отправкой электронной почты решает проблему. Но почему это работает? И есть ли лучший способ (например, с помощью 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
}