是否有任何方法在MVC 中使System.Net.Mail SendAsync工作,而不是阻塞发送方法?
我尝试使用它但是点击“启动异步操作的页面必须具有Async属性”错误,我显然无法解析(或者我可以吗?)因为没有带有@Page指令的ASPX页面我可以添加Async属性。
非常感谢帮助:(
答案 0 :(得分:2)
如果您使用第三方服务(例如Gmail)发送电子邮件并依赖SendEmail
或SendAsync
,您可能需要设置自己的SMTP服务器,然后将其转发到Gmail。好处是SendEmail
将更快地返回,您可能会忘记整个异步事件。
这样一来,如果gmail因为某种原因拒绝你,那么电子邮件仍然会留在你的本地队列中。
这是一种快速而肮脏的方式来获得可靠的电子邮件发送设置。
Instructions (not personally tested, but i did this years ago*)或see this for Windows 7
*当然我只记得我花了很长时间转换成异步后做了这个: - (
答案 1 :(得分:1)
看起来你想要Asynchronous support for ASP.NET MVC。另请参阅“Extend ASP.NET MVC for Asynchronous Action”。
This SO question也很重要。
答案 2 :(得分: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.
取决于这些电子邮件的重要程度,但如果从商业角度来看这些电子邮件很重要并且不会丢失,那么您应该使用这种方法。