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;
  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を超える電子メールを送信していますが、問題のある受信者はすぐに電子メールを受信しますが、数分後に受信するものもあれば、数時間後にも受信するものもあり、宛先に到達する前に失われる可能性があります。そして私のこの問題はまだ答えられていません。私は本当にこれで助けが必要です。ハマった。ありがとう

4

3 に答える 3

3

次のことを試してください。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。私たちはそれがオブジェクトであることを知っています。ほとんどのものがあります。オブジェクトについて特別なことはもうありません。

于 2010-02-09T03:14:36.337 に答える
0

問題はコードではなく、SMTPサーバーにある可能性があります。

DNSサーバーでMXレコードが見つからないなど、さまざまな問題が発生する可能性があります(特に、DNSサーバーが脆弱で、ルックアップをそれほど高速に処理できない場合)。

何が起こっているかについてのいくつかの指標として、私はあなたのメールサーバーのログをチェックします。

于 2010-02-09T13:49:52.440 に答える
0

実際、それは理にかなっています。非常に短い時間枠で60Kの電子メールを送信することにより、スパマーと見なされる可能性が高いと思いませんか?StrongMailのように電子メールを遅らせることは、ISPによって禁止されるのを防ぐ良い方法です。

于 2010-02-09T02:58:54.673 に答える