在ASP.NET MVC应用程序中,如何处理电子邮件的发送?我一直在考虑这个问题,我非常喜欢以面向MVC的方式处理它的想法(毕竟它是一个MVC应用程序。)
我的意思是,传递给用户的电子邮件实际上只是一个应该传递给它的模型的视图。这引发了一些问题:当执行某个操作时,我们应该如何同时向请求的浏览器和SMTP服务器提供视图?框架是否有任何支持此功能的工具?如果没有,是否有针对此类功能的第三方发布/指导?
以MVC方式处理电子邮件发送的替代方法是:
您如何处理ASP.NET MVC应用程序中的电子邮件发送?您如何看待面向MVC的方法?
答案 0 :(得分:6)
通常,当您需要新的结果类型时,您将编写一个从MyResult
继承的新ActionResult
对象。这样,您的操作方法可以自由选择指示的结果类型,并且视图引擎只需在新结果类型上调用ExecuteResult()
方法,这将保留有关如何呈现数据的逻辑。 / p>
然而,由于您所做的事情听起来只是想从View中获取HTML并通过电子邮件发送它(它与Web浏览器的结果类型相同),the answers to this question应该深入介绍它。请注意,使用MVC 2.0代码的答案是最好的方法,因为由于受欢迎的需求,他们在第二个版本中添加了“将视图渲染到字符串”功能。
您的问题很好,因为我强烈推荐使用MVC方法来处理程序的任何输出。发送视图到电子邮件在概念上与将视图发送到任何其他输出类型(PDF,移动浏览器,SMS)没有什么不同,通过构建可插入的视图输出,您可以轻松地支持扩展应用程序的使用。 / p>
答案 1 :(得分:1)
你看过MvcMailer了吗?请参阅NuGet包here和project documentation
希望它有所帮助!
答案 2 :(得分:0)
这是一个有趣的问题。您可以尝试创建自定义ActionFilterAttribute并实现OnResultExecuted方法。从那里你应该能够获得输出html并通过电子邮件发送它。
因此,您需要做的就是使用自定义属性修饰操作方法,调用视图会将输出发送到浏览器并通过电子邮件发送。