クライアント サーバー アプリケーションに電子メール通知を追加する必要があります。
ユーザーがクライアント UI で特定のアクションを実行すると、通知が発生します。
サーバーで中間層またはサービスを実行している場合、その方法を想像できます。
1)「保留中の通知」でDBテーブルを作成するだけです
2) ユーザーが通知を生成するアクションを実行すると、テーブルにレコードが追加されます
3) サーバーサイド私は継続的にそれらのメールを送信しようとし、送信が成功したらテーブルからそれらを削除します
今はこれを行うことはできません。後でサービスを追加する計画がありますが、今のところ、迅速かつ汚い方法で行かなければなりません。
だからどういうわけか私が考えていたのは、次のようなものを実装することです:
1)クライアントで通知価値のあるイベントが発生すると、同じクライアント(私のexe)が通知を送信しようとします。失敗すると、通知が「保留中の通知」テーブルに記録されます(失敗は、インターネット接続がないか、他の問題)
2) 保留中の通知をチェックするために、任意のクライアント マシンから動作するタイマーを追加します。ある場合、クライアントは電子メールを送信しようとします (トランザクションを使用して、フィールドを「TryngToSendFromClientX」としてマークし、失敗した場合はそのフィールドを NULL にリセットします)。
このアプローチはうまくいくと思いますが、明らかな制限があります(障害後に誰もシステムにログインしない場合、通知は送信されません-サービスが「ダウン」した場合も同様です)。しかし、このアプローチについてコメントし、より良いアプローチを提案できますか?
追加のメモ (シナリオをよりよく理解するため):
a) 注: すべての通知は同じ電子メール アカウントから送信されます。
b) 電子メールの送信者を追跡する必要がない。
c) 現在サービスを作成する際の問題は、基本的に展開が非常に複雑になることと、サービスの状態を監視するためのツールを作成する必要があることです。将来的には行う予定ですが、現在ではありません。将来的には、(通知の送信だけでなく) サービスに機能を追加する予定があるため、その場合はサービスを作成する方が理にかなっています。
d) Indy コンポーネントと SMTP サーバーを使用して電子メールを送信します。