3

PostgreSQL データベースを備えた Windows サーバーがあります。契約の有効期限を含む従業員データをデータベースに保存しました。有効期限の 30 日前に各従業員に自動メールを送信したいと考えています。(各従業員は電子メール アカウントを持っています)。それを行う最善の方法は何ですか?私は次のことを考えています。それが最善の方法であるかどうか教えてください。質問に対する回答が必要な場合:

  • 次のようにして WinForm C# アプリケーションをビルドします。
  • 毎日 PostgreSQL にアクセスする (Postgresql の扱い方は知っているがhow to make it per each new day (schedule task?)?)

  • マシンの日付をデータベース内のすべての有効期限と比較します

  • 差額が 30 日以下の場合、従業員に自動メールが送信されます。( how to send emails using C#}
4

4 に答える 4

5

@Middas が提案したように、単純なコンソール アプリケーションを作成すると、アプリケーションの外部でスケジューリングを担当します。

単純なコンソール アプリケーションで問題ありません。Windows スケジューラまたはサード パーティのスケジューラでスケジュールできます。

メールを送信するには、次のことができます。

  • .net が提供するSMTPClient名前空間を使用して電子メールを送信する
  • Amazon SESなどのサードパーティ サービスを使用する
于 2013-01-24T08:48:59.027 に答える
3

Quartz.NETを使用して、電子メールの送信を担当するメソッドをスケジュールできます。

Quartz.NET は cron 時間を使用して、コードを実行するタイミングを構成します。

Web サイトにいくつかの例があります。

于 2013-01-24T20:47:43.993 に答える
1

30 日後に契約が切れるすべての従業員レコードを取得する DB にクエリを発行する .Net コンソール アプリケーションを作成するのは簡単ではないでしょうか。Windows スケジューラを使用して、毎日特定の時刻に実行するようにスケジュールします。

C# でメールを送信するには、次のコードを試してください。

MailMessage mailObj = new MailMessage(strFrom, strTo, strSubject, strBody);
SmtpClient SMTPObj = new SmtpClient(IPAddress,port);
try
{
  SMTPObj.Send(mailObj);
}
catch (Exception ex)
{
  //Handle Exception
}

ミリンドに役立つことを願っています

于 2013-01-24T08:52:49.653 に答える
0

Windowsサービスであなたが提案することをします。サービス タイマーを 30 秒に設定し、時刻が 00:00:00 から 00:00:00 の間にあるかどうかを確認して、メールを送信します。elapsedこれは、必要なときにイベントが発生するように時間を計る必要がないことを意味します。

于 2013-01-24T08:43:18.420 に答える