簡體   English   中英

構建電子郵件發件人服務

[英]Building a Email Sender Service

我有幾個網絡應用程序都利用發送電子郵件,無論是通過聯系表格,還是某種通知更新等。

我發現的問題是,沒有任何方法可以跟蹤從Web應用程序發送的電子郵件,所以我想出了一個可能的解決方案:

圖1。電子郵件發件人服務流程圖

這真的很直接 - 而不是讓每個Web應用程序自己發送電子郵件,我想通過創建一個中央電子郵件發件人服務來統一該過程。

在基本術語中,每個應用程序只會在數據庫的“出站電子郵件”表中使用“收件人”,“發件人”,“主題”,“內容”數據創建一行。

然后,電子郵件發件人服務(Win服務)將從發件箱中選擇電子郵件,發送它們,然后標記為已發送。


即使我將“基本電子郵件”信息(來自,來自主題,內容)存儲在數據庫中,我真正想做的還是存儲“MailMessage”對象本身,以便電子郵件發件人服務隨后可以反序列化原始的MailMessage,因為這將允許任何應用程序完全自定義電子郵件。

以這種方式使用MailMessage對象有任何問題嗎?

更新:另一個目標是存儲已發送的電子郵件日志 - 因此使用數據庫的原因。

一個更好的架構是讓應用程序在發送電子郵件服務上調用某種公共接口。 然后,服務本身可以負責在數據庫中記錄發送。

這種體系結構意味着數據庫成為服務的內部,因此減少了應用程序之間的耦合(每個應用程序都知道相對較小的公共契約而不是數據庫模式)。 這也意味着如果您在數據庫中存儲MailMessage對象時遇到問題,那么您可以更改存儲方法而無需更新所有客戶端。

為什么要使用數據庫? 只需讓應用程序直接調用您的電子郵件服務,提供所有信息。

如果您想排隊發送,那么您可以使用與WCF的net.msmq綁定,它將請求存儲在服務可以讀取的可靠隊列中。 所有這一切都將為您完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM