這裏是設置:並非所有發送的ASP.NET MVC中使用SmtpClient發送的電子郵件。爲什麼?如何解決?
- 我有一個通知控制器從任務調度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
}
你確定你的SMTP服務器的功能?也許用Gmail代碼嘗試你的代碼可以幫助你找到問題。也嘗試使用某些日誌工具進行日誌記錄,希望有所幫助 – Parsa 2010-02-16 19:10:38
不幸的是,我懷疑你的代碼中沒有任何東西可以改變來解決這個問題。這可能是一個服務器配置問題。當你設置一個批量smtp服務器時,你必須跳過一大堆**,否則你的郵件將被許多電子郵件提供商標記爲垃圾郵件。您應該在serverfault上嘗試使用這個問題的一個版本。 – 2010-02-16 19:11:28
是的,我已經驗證過,這可以處理更小的電子郵件列表(例如,我剛剛測試了一個循環中發送20封電子郵件...沒問題) – wgpubs 2010-02-16 19:12:27