【问题标题】:ASP.NET MVC: Send email using SendAsync (System.Net.Mail)ASP.NET MVC:使用 SendAsync (System.Net.Mail) 发送电子邮件
【发布时间】:2009-05-31 05:32:51
【问题描述】:

有没有办法在 MVC 中 让 System.Net.Mail SendAsync 工作,而不是阻止 Send 方法?

我尝试使用它,但遇到“开始异步操作的页面必须具有 Async 属性”错误,我显然无法解决(或者我可以吗?)因为没有带有 @Page 指令的 ASPX 页面我可以添加 Async 属性。

非常感谢您的帮助:(

【问题讨论】:

    标签: model-view-controller asynchronous sendasync


    【解决方案1】:

    如果您使用第三方服务(例如 gmail)发送电子邮件并依赖 SendEmailSendAsync,您可能需要设置自己的 SMTP 服务器,然后该服务器将中继到 gmail。好处是SendEmail 会更快地返回,您可能会忘记整个异步操作。

    这样,如果 gmail 出于任何原因拒绝您,该电子邮件仍将保留在您的本地队列中。

    这是获得可靠的电子邮件发送设置的一种快速而肮脏的方法。

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

    *当然我只记得我花了很长时间转换为异步后才这样做:-(

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        您可能需要考虑将电子邮件放入数据库表中,然后有一个通过处理队列发送电子邮件的守护进程。

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

        取决于这些电子邮件的重要性,但如果从业务角度来看它们很重要并且不能丢失,那么您应该使用这种方法。

        【讨论】:

        • @downvoter - 如果邮件服务器关闭或无法访问怎么办?你想丢失邮件
        • +1 - Simon,这是一个合理的原则,我已经成功地实践过。它还有助于分离关注点并管理与 SMTP 服务器的单个连接(我们自定义应用程序安全性以过滤允许使用我们的 WCF 服务的应用程序)。
        猜你喜欢
        • 2013-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-20
        • 2011-06-08
        • 1970-01-01
        相关资源
        最近更新 更多