ASP.NET で大量の電子メールをバッチ送信する最良の方法は何ですか?
-
09-06-2019 - |
質問
現在、データリーダーをループし、System.Net.Mail.SmtpClient の Send() メソッドを呼び出しています。これの問題は遅いことです。各メールの送信には約 5 ~ 10 秒かかります (これは私のホストにだけ問題がある可能性があります)。次のように、web.config ファイルのexecutionTimeoutのデフォルト(デフォルトは90秒)をオーバーライドする必要がありました。
<httpRuntime executionTimeout="3000" />
1 つの注意点:私は共有ホストを使用しているため、PickupDirectoryFromIis オプションを使用して送信することは不可能だと思います (少なくとも、このオプションをオンにするとエラーが発生しました)。
解決
メールを非同期で送信できます。そうすれば、タイムアウトによって送信が中断されることはありません。
この記事は、それを始めるのに役立ちます。 C# でメールを非同期に送信する.
ここには別のアプローチがあります。 http://www.vikramlakhotia.com/Sending_Email_asynchronously_in_AspNet_20.aspx
もちろん、商用クライアントもいくつかありますが、私が試してみて推奨できるのは次のとおりです。 http://www.aspnetemail.com/
他のヒント
間違いなくバックグラウンドワーカープロセス上で生成され、非同期で実行されるようになります。
ところで、電子メールごとに 5 ~ 10 秒というのは、私にとっては非常に遅いように思えます。私のサーバーでは、電子メールごとにほんの数秒しかかかりません。
所属していません StackOverflow