2009-04-23 11 views
0

現在、生成された電子メールがシステムの大部分を占めるソフトウェアを指定しています。電子メールを送信する - DBまたはWebアプリケーションを使用する

私はデータベースから必要なすべての情報を引き出し、添付ファイル付きの電子メールを作成し、データベースの内蔵メール機能(OracleとSQL Serverの両方)を使用して送信することができます。

私の他の選択肢は、自分のアプリケーションコードで電子メールを生成することです。

私は電子メールにファンシーフォーマットを必要としないので、これを行うにはどうすればよいでしょうか?私の目標を達成するという点で違いはないようです。 DBを使用する唯一の利点は、更新される行の引き金に送信される電子メールを設定できることです。

答えて

5

私はアプリケーションコードでそれをやっています。データストレージをデータベースのままにし、アプリケーションロジックをアプリケーションに任せます。

+0

私は心から同感です。 – Russ

+0

Webアプリケーションでは、Webアプリケーションで発生するイベント(「データへの変更」など)を「多くの人」が購読でき、発生したときに電子メールを受け取ることができるという機能があるとします。 OnSave私は数百の電子メールが送信されている間、ユーザーが待つべきではないはずです。それが私のアプリケーションの中にあれば、送信待ちの電子メールのセットをポーリングするサービスを書くことができます。なぜ機能がSQL Mailに既に入っているのですか? –

2

私たちは、当社のために開発されたアプリケーションで両方の方法で電子メールを送信しています。適用方法は長期的にはるかに優れています。エラー処理はアプリケーションでは当然のことですが、アドレス形式のエラーなどのためにデータベースエンジンが停止する場合もありませんし、後で障害を追跡するのが難しい場合もあります。

1

アプリケーションコードに記述すると、プロセスを小さなテスト可能な部分に分割する方が簡単になります。

メッセージを送信せずにできるだけ多くのロジックを入れてください。実際に電子メールを送受信することなく、ほとんどのコードをテストできます。

1

本当の答えは、電子メールが一度送信され、どの程度エラーチェックをしたいのかにかかっていると思います。私に説明をさせてください:

インシデントが報告されたときに電子メールを送信するインシデントレポートシステムがあります。メールの量を気づかないと、もともと一度に100のバッチを一度に(SMTPの制限)送ってしまい、それ以上のものがあった場合はグループを通過しました。メールスレッドを作成するのは本当に良い一致ではありませんでした。メールキューを作成し、5分ごとにジョブループを作成し、送信されたものを送信しました - 間違い - キューが閉まってしまった場合、またはキューに非常に多くの電子メールがあり、実行に5分以上かかった場合は再開し、2,3,4回、さらには10回送信された電子メールをいくつか持っていた可能性があります悪いデザインだけど何でも

私は最後にSQL Serverメールキューにすべてを移動し、それはチャンピオンのように実行されている - 実際のレッスン(私の意見では)すべての処理が行われているあなたのプログラムに入る必要がありますが、電子メールが送信されることを知ったら、電子メール送信(CDO、SQL Serverメール、Oracleなど)を処理するものに渡します。

あなたがあなたのアプリに欲しいロジックですが、電子メールを処理するために構築された何かによって電子メールが処理されるようにします。

関連する問題