2009-05-31 71 views
5

是否有任何方式在MVC獲得System.Net.Mail SendAsync工作,而不是阻塞發送方法?ASP.NET MVC:發送電子郵件使用SendAsync(System.Net.Mail)

我試過使用它,但打到「頁面啓動異步操作必須有異步屬性」錯誤,我顯然無法解決(或者我可以嗎?),因爲沒有@Page指令的ASPX頁面我可以在其中添加Async屬性。

幫助是極大的讚賞:(

回答

1

你可能要考慮把電子郵件到數據庫表,然後有一個守護進程通過處理隊列發送電子郵件。

a) if youre not sending billions of emails you can have a log of what you sent 
b) you can resend if something fails. 

取決於這些電子郵件的重要性,但如果它們從業務角度來看非常重要並且不會丟失,那麼您應該使用這種方法。

+0

@downvoter後這樣做的 - URM所以如果郵件服務器是什麼關閉或不可訪問嗎?想要丟失郵件 – 2009-10-10 09:15:44

2

如果您使用的是第三方服務,如Gmail發送電子郵件,並依託SendEmailSendAsync你可能想建立自己的SMTP服務器,然後將轉播到Gmail中。好處是SendEmail將返回更快,您可能會忘記整個異步的事情。

這樣,如果gmail因爲任何原因拒絕您,電子郵件仍然會在您的本地隊列中。

這是一種快速和骯髒的方式來獲得可靠的電子郵件發送設置。

Instructions (not personally tested, but i did this years ago*)see this for Windows 7

*當然,我只記得我花了很長的時間轉換到異步:-(

相關問題