0

有効期限が近づいているユーザー アカウントについて、特定の電子メール配布リストに頻繁に (まだ決定されていません) 通知する必要があります。

私はこれを達成するための最良の方法を考えています.asp.net内で別のスレッドを生成してこの種のことを処理するのは一般的に悪い考えであることを知っているので、おそらく単純なサービスが行く方法だと思いますが、何かのためにとても小さいので、少しやり過ぎかもしれません。

理想的には、ベビーシッターをあまり必要としないものが欲しいです (たとえば、サービスが実行されていることを確認するなど)。

サイト内にこの種の情報を掲載したページを設けることも提案しましたが、これが確認されるまでには数日かかる可能性があります。また、ユーザーが自分の有効期限を延長することもできません。

他に実行可能なオプションはありますか。

4

2 に答える 2

0

これは私が行ったことであり、回答に対するプレスコットのコメントに似ています。

たくさんの有効期限を報告する管理ページのある Web サイトがあります。このページは QueryString パラメーター SEND_EMAILS も受け入れるため、サイトの管理ユーザーが QueryString パラメーター SEND_EMAILS=true を渡すと、期限切れになるすべてのユーザーに大量の電子メールが送信されます。

次に、毎日実行する Windows スケジュール タスクを追加し、SEND_EMAILS=true パラメーターを使用してページをロードしました。

これは、スケジュールされたタスクでコンソールから webrequest を発行するために使用した単純なコードです。

namespace CmdLoadWebsite
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "http://default/site/";
            if (args.Length > 0)
            {
                url = args[0];
            }
            Console.WriteLine(GetWebResult(url));
        }

        public static string GetWebResult(string url)
        {
            byte[] buff = new byte[8192];            
            StringBuilder sb = new StringBuilder(); 

            HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
            HttpWebResponse response = (HttpWebResponse) request.GetResponse();
            Stream webStream = response.GetResponseStream();

            int count = 0;
            string webString;

            do
            {
                count = webStream.Read(buff, 0, buff.Length);
                if (count != 0)
                {
                    webString = Encoding.ASCII.GetString(buff, 0, count);
                    sb.Append(webString);
                }
            }
            while (count > 0);

            return(sb.ToString());
        }
    }
}
于 2012-05-17T05:16:49.313 に答える
0

それに応じて作業するのに最適な方法は次のとおりです

必要に応じて、アカウントの有効期限が近い (たとえば、今日から 10 日後) すべてのユーザーのリストを選択するアプリケーションを作成します。

このアプリケーションは、毎日の実行としてスケジュールされます (発生したエラーと 1 回の実行で送信された電子メールの総数を表示するログ ファイルを含む exe を作成します)。

このアプリケーションは、基準に基づいてすべてのレコードを取得し、基本的な HTML テンプレートを使用してすべてのレコードにメールを送信します。電子メールが送信されると、過去 10 日間に 1 回送信したかのようnotificationFlagに、データベースの列 ( ) が更新されます。1それ以外の場合、デフォルトでは0

毎日午前 12 時 10 分に exe をスケジュールできます (データベース サーバーと Web サーバーが一致しない場合に備えて)。.

于 2012-05-17T05:13:41.917 に答える