何をすべきかを知メールの送信を背景にスレッドかどうかASP.NET
-
21-09-2019 - |
質問
しているスレッドのバックグラウンドで実行中のと睡眠およびプルデータベースからデータが何かつ適切な監督を行います。私の送信メールを使用google appsを使用SmtpClient(コード。
知りたかったんですがあればまことに気をつければよいのか。私はオープンのみメールでの時間(又は登録のパスワードをお忘れの方はこちらます。私はちょっとした何かが起こるような無効なメールのロックのスレッドからビーチに位置タイムアウトの設定もgoogle appsなどが行われのアプリを吹きます。注意は?す。まだどういう試験でも見ることができますか?
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential(fromAddr, pass),
EnableSsl = true
};
MailMessage mail = new MailMessage(fromAddr, toAddr, subject, body);
mail.IsBodyHtml = true;
client.Send(mail);
解決
はIISを使用している場合。サーバー上のSMTPをインストールANローカルホストにすべてのメールを送信します。そのようにメールがすぐに通過しない場合は、SMTPサーバはメールをキューの代わりに、アプリケーションがハングアップします。
あなたはスマートホストとしてGmailを使用するSMTPサーバを設定する必要があります。これを構成する方法の詳細情報が必要な場合、私に知らせます。
他のヒント
コードにのtry / catchを追加し、あなたは大丈夫です。それは意志、最悪の場合、最終的にタイムアウト。それは永遠に実行されません、とGoogleは、(実際にはSMTPがそれがタイムアウトに来るとき、あなたが遅い場合は...、それは接続を殺すかなり厳しいです)永遠に開く接続を維持しません。
try
{
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential(fromAddr, pass),
EnableSsl = true
};
MailMessage mail = new MailMessage(fromAddr, toAddr, subject, body);
mail.IsBodyHtml = true;
client.Send(mail);
}
catch
{
// do something
}
これはテストになると...別のGmailアカウントを使用します。また、あなたは一日あたりの送信された電子メールの利用限度額を確認することをお勧めします。わからない何Gmailの数があるが、彼らはちょうどあなたが送信するか、これまで多くの送信できません。
私はこれにて行われASP.Net 以降、このタグです。
いかに重要かがですか?この候補をWindowsのサービスではなく、ASP.Net 実行時の場合はお客様の環境に適用されるものとする。
まれるプルのデータからのデータベースにお送りします。ないことに依存してASP.Net.プラスのサービスがありますより良いスレッド試験、ロギングは、非同期オプション
したい場合にこだわるASP.Net ランタイム時において、その後できるものと考え 非同期ページ ださい。ることができまして産卵のために複数のメールスレッドとして本ページのスレッドを待機します。ように設定することもできますタイムアウト値にすることなく、消ログインこだわったスレッド)。設定値及び取り扱いは、非同期タイムアウトを思い切りのお悩みんも怪しいものです。このソリューションは少なくともお取りメール送信のおのページの請求ます。
試験すべきです。登録することができ別のgoogleアカウント試験をします。
あなたはTimeout
のSmtpClient
プロパティを設定し、Send
呼び出しによってスローされた例外を処理することができます。あなたが適切と認める例外の原因を処理する必要がありますけれども、それは、スレッドをロックしません。