【问题标题】:MVC 3: Email notificationsMVC 3:电子邮件通知
【发布时间】:2011-04-14 13:54:24
【问题描述】:

我想将电子邮件通知系统集成到我的 MVC3 应用程序中。因此,当用户的任务到期时,他们会收到电子邮件提醒。我是 MVC 的新手,所以我想指出正确的方向来解决这个问题。

非常感谢, 戴尔

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    在我看来,您正在寻找一封电子邮件,以便在截止日期临近时发送出去,而不必依赖用户操作来触发电子邮件。为此,您需要有某种外部流程,可以定期检查并根据需要发送电子邮件。

    有多种设置方法,但对于 Web 应用程序,我最喜欢的方法之一是在后台运行脚本或服务,该脚本或服务仅在计时器上点击 Web 应用程序的页面。然后该页面负责检查数据库并发送任何需要发送的电子邮件。您还可以做一些有趣的事情,通过构建速率限制功能来确保此过程不会过多地对 MVC 应用程序的核心功能征税。 (我相信,这就是 FogBugz 所做的,它可以处理需要以不会减慢用户速度的方式发送或接收的电子邮件队列)

    执行此操作的其他方式基本上是相同的模式,但是何时发送电子邮件和实际发送电子邮件的逻辑从 MVC 应用程序转移到外部流程中。

    至于如何发送实际电子邮件,在 Google 上快速搜索如何从 .Net 发送电子邮件(假设您正在谈论 ASP.Net MVC3)将为您提供有关如何发送电子邮件的更好信息我做不到。

    【讨论】:

      【解决方案2】:

      我会先熟悉Dependency Injection 的概念,然后开发作为通用模块发送通知的代码。

      实际的通知引擎不需要知道有关您的应用程序的任何信息,或触发电子邮件的原因,您应该能够构建(或使用)简单地将消息发送给一组收件人的东西(您可以确定它的功能组件会,但它不能渗透到你的底层应用程序的逻辑中)。

      一旦它是tested,并且您确信它也可以满足您的需求,您可以根据需要简单地注入您的 mvc 应用程序。这样,您的应用程序的控制器将根据需要使用您的通知服务来执行必要的应用程序逻辑。

      理想情况下,您的 MVC 应用程序根本不应该包含太多业务逻辑,它应该只包含对执行应用程序逻辑的一堆不同服务的引用,并且您的控制器应该只知道如何适当地使用这些服务。

      【讨论】:

        【解决方案3】:

        我非常喜欢使用Quartz 来执行此类后台进程。它可以托管在 Windows 服务或within ASP.NET

        除了发送电子邮件之外,您还需要存储发送通知的时间以避免发送重复通知。

        【讨论】:

          猜你喜欢
          • 2011-12-16
          • 2015-11-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多