これを「そこに」実行するサービスは知りませんが、開発している場合の最善の方法は、10分ごとなど、タイマーで実行されるWindowsサービスを作成することです。
SQL クエリによって、次の 15 分または 30 分以内に予定されているデータベースから読み取ります。データが返されたら、おそらくこれらのレコードのそれぞれに対してタイマーを作成し、その予定のタイマー ティック イベントを介して適切なタイミングで起動するように設定します。タイマーが作動したら、スレッドプールでメールを送信するだけで、メールのバッチを送信するときにメインスレッドが停止またはブロックされるのを回避し、サービスの応答性を少し高めることができます。
ASP.NETでこの「自動化」を行うことはできません。Windowsサービスは、タスクを実行するための定期的な間隔がある場合にまさにこの目的のためのものです。この場合、一定期間の予定/スケジュールのリストを取得してからメールを送る。
電子メールが送信されたら、そのレコードを更新して、次のタイマー イベントで再び取得されないようにして、電子メールが重複して送信されないようにする必要があります。データベース内のレコードのフィールドに「SentReminder」などのフラグが設定されています。
これがそれを行う方法であり、最良の方法です。