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);
}
何か案は?