[英]SmtpClient.SendAsync() not receiving all messages I sent
我剛剛編寫了一些測試代碼,查看System.Net.Mail.SmtpClient向我自己發送相同的消息。
int numClients = 10;
List<SmtpClient> mailClients = new List<SmtpClient>();
for (int i = 0; i < numClients; i++) {
mailClients.Add(new SmtpClient(smtpHost));
}
MailMessage msg = new MailMessage("myAddress@eg.com", "myAddress@eg.com", "test message", "" );
foreach (SmtpClient c in mailClients) {
c.SendAsync(msg, null);
}
這一切都很好並且執行沒有任何問題,只是我只收到'n - 1'消息。 即如果我發送10條消息,我只在收件箱中收到9條消息。 如果我發送50我只收49等
注意:如果我更改代碼以使用阻止發送,那么我將始終收到正確數量的消息。 例如
foreach (SmtpClient c in mailClients) {
c.Send(msg);
}
有任何想法嗎?
以下是一些可能有用的觀察結果:
我懷疑你可能遇到了多個SmtpClient實例的錯誤/問題,這些實例都包裝了同一個SMTP服務器。 使用單個實例可以解決問題。
UPDATE
每個MSDN:
調用SendAsync后,必須等待電子郵件傳輸完成后再嘗試使用Send或SendAsync發送另一封電子郵件。
http://msdn.microsoft.com/en-us/library/x5x13z6h.aspx
因此,根據您的情況,使用SendAsync over Send幾乎沒有任何好處。 您的循環可能正在踩東西,因為您不等待以前的SendAsync完成。
以下是一些想法:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.