这是设置:
- 我有一个从任务调度程序调用的通知控制器 1x/天
- action 方法提取了 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
}