5

現在、データリーダーをループして、System.Net.Mail.SmtpClient の Send() メソッドを呼び出しています。これの問題は、遅いことです。各メールの送信には約 5 ~ 10 秒かかります (これは私のホストの問題である可能性があります)。次のように、web.config ファイルの executionTimeout のデフォルト (デフォルトは 90 秒) をオーバーライドする必要がありました。

 <httpRuntime executionTimeout="3000" />

1 つの注意点: 私は共有ホストを使用しているため、PickupDirectoryFromIis オプションを使用して送信することはできないと思います (少なくとも、オンにするとエラーが発生しました)。

4

2 に答える 2

6

メールを非同期で送信できます。そうすれば、タイムアウトによって送信が中断されることはありません。

この記事は、それを始めるのに役立ちます: Sending Emails Asynchronously in C# .

ここに別のアプローチがあります: http://www.vikramlakhotia.com/Sending_Email_asynchronously_in_AspNet_20.aspx

もちろん、いくつかの商用クライアントを利用できますが、私が試して推奨できる唯一のクライアントはhttp://www.aspnetemail.com/です。

于 2008-09-11T16:04:23.257 に答える
0

バックグラウンドワーカープロセスで確実に生成されるため、非同期に出ます。

ところで、電子メールごとに 5 ~ 10 秒というのは、私にはかなり遅いように思えます。私のサーバーでは、電子メールごとにほんの数分の 1 秒しかかかりません。

于 2008-09-11T16:10:32.773 に答える