是否有任何方式在MVC獲得System.Net.Mail SendAsync工作,而不是阻塞發送方法?ASP.NET MVC:發送電子郵件使用SendAsync(System.Net.Mail)
我試過使用它,但打到「頁面啓動異步操作必須有異步屬性」錯誤,我顯然無法解決(或者我可以嗎?),因爲沒有@Page指令的ASPX頁面我可以在其中添加Async屬性。
幫助是極大的讚賞:(
是否有任何方式在MVC獲得System.Net.Mail SendAsync工作,而不是阻塞發送方法?ASP.NET MVC:發送電子郵件使用SendAsync(System.Net.Mail)
我試過使用它,但打到「頁面啓動異步操作必須有異步屬性」錯誤,我顯然無法解決(或者我可以嗎?),因爲沒有@Page指令的ASPX頁面我可以在其中添加Async屬性。
幫助是極大的讚賞:(
你可能要考慮把電子郵件到數據庫表,然後有一個守護進程通過處理隊列發送電子郵件。
a) if youre not sending billions of emails you can have a log of what you sent
b) you can resend if something fails.
取決於這些電子郵件的重要性,但如果它們從業務角度來看非常重要並且不會丟失,那麼您應該使用這種方法。
如果您使用的是第三方服務,如Gmail發送電子郵件,並依託SendEmail
或SendAsync
你可能想建立自己的SMTP服務器,然後將轉播到Gmail中。好處是SendEmail
將返回更快,您可能會忘記整個異步的事情。
這樣,如果gmail因爲任何原因拒絕您,電子郵件仍然會在您的本地隊列中。
這是一種快速和骯髒的方式來獲得可靠的電子郵件發送設置。
Instructions (not personally tested, but i did this years ago*)或see this for Windows 7
*當然,我只記得我花了很長的時間轉換到異步:-(
@downvoter後這樣做的 - URM所以如果郵件服務器是什麼關閉或不可訪問嗎?想要丟失郵件 – 2009-10-10 09:15:44