C#のから送信されたメールを受信する際の遅延
質問
ここでは私のコードです。
for(int i = 0; i < number ; i++)
{
MailAddress to = new MailAddress(iMail.to);
MailAddress from = new MailAddress(iMail.from, iMail.displayName);
string body = iMail.body;
string subject = iMail.sub;
oMail = new MailMessage(from, to);
oMail.Subject = subject;
oMail.Body = body;
oMail.IsBodyHtml = true;
oMail.Priority = MailPriority.Normal;
oMail.Sender = from;
s = new SmtpClient(smtpServer);
s.ServicePoint.ConnectionLeaseTimeout = 0;
if (s != null)
{
s.Send(oMail);
}
oMail.Dispose();
s = null;
}
私はこのコードを使用して60,000を超える電子メールを送信しています。、今私の問題は、一部の受信者はすぐに電子メールを取得しますが、そのうちのいくつかは、取得数分後、そのうちのいくつかは、さらに数時間後に取得し、それらの多くは、に到達する前に失われるかもしれ先。そして私のにこの問題をhref="https://stackoverflow.com/questions/2209617/smtpclient-failure-sending-mail">。 私は本当にこの中に助けを必要とします。ハマった。感謝
解決
実はそれは理にかなっています。あなたは非常に短い時間枠内で60K電子メールを送信することによって、あなたがスパマーとして考慮される可能性があるとは思いませんか? StrongMailのような電子メールを遅らせることのISPによって禁止されてからあなたを防ぐための良い方法ですありません。
他のヒント
以下を試してください:あなたはMailMessageはusing
ブロックにする必要があります。また、あなたは、各メッセージのための新しいSmtpClient
は必要ありません。あなたは確かにそれがnullに設定する必要はありません!これはVB6ではありません。
SmtpClient smtpClient = new SmtpClient(smtpServer);
smtpClient.ServicePoint.ConnectionLeaseTimeout = 0;
for (int i = 0; i < number; i++)
{
MailAddress to = new MailAddress(iMail.to);
MailAddress from = new MailAddress(iMail.from, iMail.displayName);
string body = iMail.body;
string subject = iMail.sub;
using (MailMessage mailMessage = new MailMessage(from, to))
{
mailMessage.Subject = subject;
mailMessage.Body = body;
mailMessage.IsBodyHtml = true;
mailMessage.Priority = MailPriority.Normal;
mailMessage.Sender = from;
smtpClient.Send(mailMessage);
}
}
提案:oMail
ような変数のものに名前を付けないでください。私たちは、が知っているは、オブジェクトです。ほとんどのものがあります。オブジェクトに関する特別なことは何ももうありません。
問題は、あなたのコードではなく、あなたのSMTPサーバーとそうではありません。
これは、(あなたのDNSサーバが弱く、その高速な検索を処理できない場合は特に)DNSサーバにMXレコードを見つけることができないように、問題の任意の数の可能性があります。
私は何が起こっているかのように、いくつかの指標として、メールサーバのログをチェックします。