0

呼び出している電子メールメソッドがあります。ページOnPageLoadC# 4.0読み込まれると、ユーザーに電子メールが送信されます。問題は、ユーザーがページを更新するたびに、ユーザーへの電子メールが生成されるたびに受け入れられないことです。ページを開いたときに初めてメソッドが実行される方法はありますか。このようなメソッドを呼び出しています。

if (!IsPostBack)
{
  Sendemail(emailid, "ibrahim.cheema@shakarganj.com.pk", "SML Dashboards Access", "<b><font color=red>Dashboard Access Alert!</font></b> <br></br>Note: If the access is by yourself, then please ignore this email.<br><br>SML Dashboards accessed using your credentials<br><b>" + emailid + "<br><b>Location / IP Address :</b>" + GetUserIP());
}

このように、ユーザーはページを更新するときに常に電子メールを受信します。どうすればそれを回避できますか?

4

3 に答える 3

1

オプションでCookieを保存し、メールを送信する前にCookieが存在するかどうかを確認できます。これが最も簡単な方法です。変数がある場合は、データベースのユーザープロファイルテーブルに変数を保持するのが最善の方法です。これが最も安全な方法であり、Cookieとセッションは無制限ではありません。

于 2013-02-22T12:30:28.993 に答える
0
if(Session[emailid]==null)
{
  // SEND

  Session[emailid]==true;
} 

タイムアウトや IIS の再起動などのさまざまな状況でセッションがリセットされる可能性があり、次のセッションの開始時に電子メールが再度送信されることに注意してください。この電子メールを生涯に一度だけ送信したい場合は、送信済みフラグをデータベースに保持する必要があります。

于 2013-02-22T12:27:18.163 に答える
0

仲間のスタックスタートレッカーが述べたように、行う方法は次のとおりです。

クライアントシステムに情報を保存 -- 明らかな危険 :(

セッション変数を維持します -- リセット イベントは使いやすさを妨げます - この状況は、ローカル ディスクに永続化するか、複数のサーバー マシンでサービスを処理できるため、グローバルに表示可能な (サービス サーバー用の) 永続化レイヤー (ストリームである可能性がある) に永続化することで処理できます。 、db、クラウド内の場所。

他の解決策は、このロジックをページからメール サービスに移動することです。これは、より多くの作業ですが、よりクリーンなアプローチです。

于 2013-02-22T23:58:12.983 に答える