2009-04-23 19 views
0

我目前正在制定一項軟件,由此生成的電子郵件將成爲系統的一大部分。發送電子郵件 - 使用數據庫或Web應用程序

在調查中,我可以把所有我所需要的信息從數據庫中,並創建帶有附件的電子郵件,並使用數據庫內置的郵件功能(包括Oracle和SQL Server)發送。

我的其他選擇是在我的應用程序代碼中生成電子郵件。

由於我不需要在電子郵件中的任何花哨的格式,這將是做到這一點的最好方法是什麼?在實現我的目標方面似乎沒有任何區別;使用數據庫的唯一好處是可以將電子郵件設置爲在正在更新的行的觸發器上發送。

回答

5

我會在應用程序代碼中執行此操作。將數據存儲保留到數據庫,並將應用程序邏輯留給應用程序。

+0

我全心全意同意。 – Russ 2009-04-23 14:18:48

2

我們已經爲我們公司開發的應用程序發送電子郵件。從長遠來看,申請方法已經取得了很好的成效。錯誤處理在應用程序中被認爲是理所當然的,但數據庫引擎可能會或可能不會因地址格式錯誤等而死亡,並且以後很難跟蹤錯誤。

1

如果將它放在應用程序代碼中,將會更容易將該過程分解爲小的可測試部分。

把儘可能多的邏輯儘可能到生成消息沒有發送出去,這樣就可以測試大部分代碼,而無需實際發送和接收電子郵件。

1

我認爲真正的答案取決於它是多麼關鍵的電子郵件被髮送一次,多少錯誤檢查你想做的事情。讓我來解釋:

我們對輸入的事件時發送電子郵件事件報告制度。沒有意識到電子郵件的數量,我們原本會一次發送一批100個郵件(SMTP限制),如果發現超過這個數量的話,會通過羣組加入 - 在某些銷售之後,我們發現超過1000個郵件正在發送在每個條目上,發送它們可能需要將近一分鐘 - 創建一個郵件線程並不是真正的匹配,所以我們創建了一個郵件查詢並每5分鐘有一個作業循環併發送任何沒有發送的郵件 - 錯誤 - 如果這個問題被阻止了,或者如果有超過5分鐘的電子郵件運行它會重新開始,我們有一些電子郵件發送2,3,4甚至10次 - 可能有一直不好的設計,但無論

我們finaly剛搬到整個事情到SQL服務器上的郵件闕,它已經運行如飛 - 真正的教訓(在我看來)是howev所有的處理呃你需要進入你的程序,但一旦你知道電子郵件將被髮送給誰,並傳遞給專門處理電子郵件發送的東西(CDO,Sql Server郵件,Oracle無論如何)

您仍然可以測試所有你想在你的應用程序中使用的邏輯,但讓電子郵件由內置的東西來處理電子郵件。

相關問題