0

ユーザーがサインアップしてからアクティベーションメールを受信する必要があるWebサイトがあります

これを行う現在の方法は、登録スレッド自体に電子メールプロセス全体を含めることです。

Register() {
   registerUser()
   sendActivationMail()
   return View(Successpage)
}

sendActivationMailには、メールサーバーに接続してメールを送信するために必要なすべてのコードが含まれています。これは最善の方法ではなく、すべてをテストするためにすばやく実行しました。問題は明らかです。ページは他のすべてが終了した後にのみ返されるため、ユーザーは「ページにサインアップしていただきありがとうございます」を待つ時間が長くなります。

私たちが認識しているこれに対する適切なオプションは次のとおりです。

  1. 登録のデータベース側が完了したら、新しいスレッドを開始して電子メールを送信し、すぐに元のスレッドを返します。
  2. 電子メールをデータベースに永続化し、継続的に実行され、x分ごとに送信する新しい電子メールがないかデータベースをチェックするスレッドを作成します
  3. Amazon SimpleEmailServiceなどのサードパーティのEメールサービスを使用します。

他に使用する方法はありますか?上記のどれかが最高として際立っていますか?

助けてくれてありがとう。

4

2 に答える 2

2

データベースを使用してメッセージをキューに入れます。継続的に実行され、キューをチェックして送信するサービスアプリケーションがあります。電子メールを送信するWebアプリケーションがたくさんあるので、それらはすべてキューに入れられます。これは私たちのために働きます。私はそれに賛否両論があると確信していますが、私が言ったように、それは私たちのために働きます。

于 2012-04-30T15:51:20.067 に答える
1

それはあなたのニーズに依存します。

方法2の利点は、送信が失敗した場合に、何をするかを再試行/決定できることです。

DBに似た別の方法は、MSMQなどのキューインフラストラクチャです。

于 2012-04-30T15:50:51.057 に答える