2012-05-04 3 views
2

テーブル内のメッセージのキューを読み取り、複数の受信者に電子メールとして送信するコンソールアプリケーションを作成しました。典型的な使用シナリオは、微妙に異なるメール本体(差し込み名前、住所など)を持つ別のメールアドレスに、それぞれ2000件のメールを送信することです。.NET 4 SmtpClientを使用して1つのバッチで複数の電子メールを送信する(SendAsyncとの送信)

アプリは動作し、周囲の2000件のメールを処理しているようです1分半。私が使用したアプローチは、(私は簡潔にするためのtry..catchブロックを取り出しました)本当に簡単です:

using (var mailBot = new SmtpClient()) 
{ 
    foreach (var mail in dataContext.Mails 
             .Where(item => !item.IsSent) 
             .OrderBy(item => item.MailId) 
             .ToList()) 
    { 
     mailBot.Send(new MailMessage(mail.MailFrom, mail.MailTo, mail.Subject, mail.Message)); 
     mail.IsSent = true; 
     dataContext.SaveChanges(); 
    } 
} 

は今、私の質問は、どのように私はこのアプリの動作をスピードアップすることができますか? SmtpClient.SendAsync()を使用することでこのシリアルアプローチが改善されるかもしれませんが、作成するスレッドの数を制御することはできず、送信結果のためにアプリが必要ですメールが正常に送信されたかどうかをフラグする必要があります。また、私は受信SMTPサーバーは、特定の数の同時要求を処理できることを示しています。

マルチスレッドソリューションがメールの配信をスピードアップし、アプリを早期に終了させることができると私は考えていますか?

+0

gmailがバルク送信者を処理する方法のガイドラインは次のとおりです。http://support.google.com/mail/bin/answer.py?hl=ja&answer=81126 – Sharun

+0

メールの拒否率が非常に高いスパム対策フィルタ2つ以上の電子メールアドレスが同じメールサーバー上にある場合、それらを迷惑メールとして拒否することができます。 – i486

答えて

関連する問題