2010-08-11 119 views
2

ASP.NET Webforms應用程序。ASP.NET電子郵件模式

問題:如何優雅地實現emailling?

應用程序的很多部分都需要它。這將包括HTML電子郵件,解決方案如何處理反彈等。

我可以選擇使用我自己的SMTP服務器(應用程序託管在VPS上),或使用託管服務提供商。

我想開始也記錄在這裏(log4net的可能)

任何建議圖書館使用/模式實現?

編輯:http://martinnormark.com/2010/03/13/generate-html-e-mail-body-in-c-using-templates

我喜歡有一個調試抓asp.net net.mail - route all emails to a different email address in debug mode

回答

2

對於僞造的SMTP服務器進行測試,使用ndumbster。菲爾哈克有一個使用的博客文章 - http://haacked.com/archive/2006/05/30/ATestingMailServerForUnitTestingEmailFunctionality.aspx

正如你指出的電子郵件模板是太棒了。考慮爲HTML和純文本創建模板。確保你的HTML電子郵件模板使用基本的HTML作爲許多不符合現代瀏覽器標準的電子郵件客戶端(例如使用Word HTML呈現引擎的Outlook)。

Log4Net是一個很好的開始與日誌記錄。您還可以使用System.Diagnostics進行簡單的跟蹤和調試,這可以輕鬆寫入事件日誌或文件。我總是喜歡爲所有日誌記錄設置一個包裝器,以便日誌框架可以很容易地換出來,如果以後因爲必須具備的功能而想要將它們交換出來。從可測試性的角度來看,它也很好,因爲您可以輕鬆地嘲笑它。

真的,只要你沒有列入黑名單,你使用哪個SMTP服務器並不重要。確保你檢查了SMTP服務器IP與DNSBL,這樣你就知道你的SMTP主機的信譽不好。我強烈建議使用Barracuda Central的IP聲譽來檢查它 - http://www.barracudacentral.org/lookups。當你收件人使用grey listing時,請確保你的SMTP服務器確實支持重新發送。

對於退款,您可以設置一個POP賬戶讓它發送回去,它可以像讀取電子郵件和查找拒絕來自哪個電子郵件帳戶一樣簡單,以及以前電子郵件的主題(應該是唯一的),以便您可以稍後或在幾次反彈後將其從列表中刪除。實現閱讀POP看看這個主題 - Reading Email using Pop3 in C#

+0

非常感謝Mike737,jwsample和Ben。 – 2010-08-11 07:39:52

0

至於收到的消息,我曾與hMailServer這是微軟Windows的免費電子郵件服務器巨大的成功。它支持常見的電子郵件協議(IMAP,SMTP和POP3),並且可以輕鬆地與許多現有的Web郵件系統集成。它具有靈活的基於分數的垃圾郵件防護功能,可附加到病毒掃描程序以掃描所有傳入和傳出的電子郵件。絕對值得一看。

對於傳出的電子郵件,我喜歡我在這篇文章中所表達的模式:.NET MailMessage, LinkedResources, AlternateViews and Exceptions

1

,你可以實現自己的麻煩負荷節省在路上的最好方式不是直接從Web應用程序發送電子郵件。相反,將電子郵件(或生成電子郵件所需的信息)寫入數據庫,並有一個單獨的過程進行郵寄。

請考慮當您的smtp服務器關閉並且您的應用嘗試發送時會發生什麼情況。如果您有單獨的進程發送電子郵件,您可以在稍後備份時發送電子郵件。

此外,您還可以限制您發送的電子郵件。如果您最終得到了您手上的下一件大事®,您將很高興您現在能夠優先處理您的傳出郵件或批量發送郵件列表,而不會在網站流量的高點壓壞您的smtp服務器。

如果您正在處理反彈,只需讓該流程處理即可。現在,您可以將返回的電子郵件地址記錄到黑名單,並針對每封發出的電子郵件檢查相同的列表。沒有辦法,你想不得不把所有的東西放在你的網絡應用程序。

無論你想出什麼東西,請考慮只寫電子郵件發送到數據庫,讓你的應用程序開展業務。您仍然可以近乎實時地發佈消息,但您可以毫不費力地將問題分離出來。