2

私は現在、SmtpClientを使用して、イベントに登録またはサインアップするユーザーに電子メールを送信しています。

登録をクリックすると、情報が保存され、メール送信機能が呼び出されますが、長すぎるメールを送信するのに1秒もかかりません。

ユーザー情報を保存する方法はありますか?ページが読み込まれた後、バックグラウンドでvbからメール送信機能を呼び出します。

WinFormを使用してメールを送信することを考えましたが、ホスティングにGodaddyを使用している場合、どこで実行しますか?

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

4

3 に答える 3

1

ユーザー情報を保存できます。ページが読み込まれると、サーバーページにajax呼び出しを行って、ユーザーにメールを送信できます。これの利点は、非同期であるため、ユーザーは、サイトナビゲーションで他のアクションを続行するために、このアクションが完了するのを待つ必要がないことです。しかし、それはあなたが持っている方法より速くはありません。

(再?)ロードされたページで、domready関数を使用してこのようなajax呼び出しを行うことができます。

$(function(){

  //Whatever code inside this will be executed only after the DOM finishes loading
   var userId=45;  //replace this with your new userId
   $.post("Emailer.aspx?userId="+userId,function(data){
      alert("Some alert message if you really want!");
   });

});

Emailer.aspxquerystringパラメーターを読み取り、アクション(電子メールの送信)を実行するというページがあるとします。

于 2012-06-25T02:35:28.043 に答える
1

SmtpClientのSendAsync()メソッドとSend()メソッドを使用するだけです。これにより、送信を処理するための新しいスレッドが生成されるため、コードは電子メール送信を超えて続行できます。これにより、ユーザーは待ち時間を節約できます。この方法で何千もの電子メールをループで送信しないでください。サーバーが生成するスレッドが多すぎて、パフォーマンスが低下する可能性があります。

SMTPサービスの「ピックアップディレクトリ」オプションを調べることもできます。SMTPサーバーが配置されている場所へのファイル書き込みアクセス権がある場合は、後で送信するためにそこにメールを「ドロップ」できます。

于 2012-06-25T05:53:28.663 に答える
0

私の最初の答えは、nbushnellによって提案されたSendAsyncです。

何千もの電子メールが心配な場合は、ユーザーのデータベースレコードに「ビット」フィールドを設定し、ビットが0のユーザーテーブルを読み取り、電子メールを送信してからビットを1に設定するWindowsサービスを作成できます。

これにより、ページの読み込みを待機しているユーザーの待ち時間がなくなりますが、実際のメールの受信には遅延が発生します。

于 2012-06-25T19:50:16.337 に答える