MVC中有什么方法可以让 System.Net.Mail SendAsync 工作,而不是阻止 Send 方法?
我尝试使用它,但遇到“开始异步操作的页面必须具有 Async 属性”错误,我显然无法解决(或者我可以吗?)因为没有带有 @Page 指令的 ASPX 页面,我可以添加异步属性。
非常感谢您的帮助:(
MVC中有什么方法可以让 System.Net.Mail SendAsync 工作,而不是阻止 Send 方法?
我尝试使用它,但遇到“开始异步操作的页面必须具有 Async 属性”错误,我显然无法解决(或者我可以吗?)因为没有带有 @Page 指令的 ASPX 页面,我可以添加异步属性。
非常感谢您的帮助:(
如果您使用第三方服务(例如 gmail)来发送您的电子邮件并依赖,SendEmail
或者SendAsync
您可能希望设置自己的 SMTP 服务器,然后该服务器将中继到 gmail。好处是它SendEmail
会更快地返回,并且您可能会忘记整个异步操作。
这样,如果 gmail 出于任何原因拒绝您,该电子邮件仍将位于您的本地队列中。
这是获得可靠的电子邮件发送设置的一种快速而肮脏的方法。
Instructions (not personally tested, but i did this years ago*) or see this for Windows 7
*of course I only remembered i did this after spending a long time converting over to async :-(
看起来您想要对 ASP.NET MVC 的异步支持。另请参阅“为异步操作扩展 ASP.NET MVC ”。
这个 SO question也是相关的。
您可能需要考虑将电子邮件放入数据库表中,然后有一个通过处理队列发送电子邮件的守护进程。
a) if youre not sending billions of emails you can have a log of what you sent
b) you can resend if something fails.
取决于这些电子邮件的重要性,但如果从业务角度来看它们很重要并且不能丢失,那么您应该使用这种方法。