【问题标题】:Best way to send scheduled e-mail in an MVC application?在 MVC 应用程序中发送预定电子邮件的最佳方式?
【发布时间】:2016-02-09 20:33:30
【问题描述】:

我有一个MVC 应用程序,它会在特定时间定期发送电子邮件。虽然我可以通过使用Quartz.NETDebugging 模式下管理它,但由于回收应用程序池等原因,它在发布到IIS Server 时不起作用。所以,我认为这是一个普遍的问题,我认为database triggerwindows service 触发电子邮件发送。那么,最好的选择是什么?实际上,如果在数据库端创建触发器比运行脚本更简单,我更喜欢这个。但是,如果有更好的选择,请您澄清一下如何将它集成到我的MVC 应用程序中?
注意:我使用MSSQL Server 2008 作为数据库,Windows Server 2008 用于发布应用程序。

【问题讨论】:

  • 只需将 Quartz 代码包装在 Windows 服务中。
  • 怎么样?您能否举个例子并作为答案发布?

标签: asp.net-mvc triggers windows-services scheduled-tasks quartz-scheduler


【解决方案1】:

您可以创建一个与您的 MVC 应用程序一起运行的应用程序,用于发送电子邮件。使用每 x 分钟或每天设定时间运行的计划任务触发它。

【讨论】:

  • 您的意思是向解决方案添加应用程序吗?可以举个例子吗?
  • 是的。因此,在您的解决方案中创建一个新的控制台应用程序项目,该项目将负责发送电子邮件和构建。 (为了测试而创建一个 hello world,或者甚至只是让它更新您的数据库中的某些内容,以便您知道它已经运行)。浏览到在 bin 文件夹中创建的 exe,并将文件路径的副本复制到它。打开计划任务,“创建任务..”,为其命名,在“触发器”选项卡上设置一个(或多个)触发器,选择“操作”选项卡并添加“新建..”操作。将先前复制的路径添加到 Program/Script 字段(或浏览到它),单击确定。基本上就是这样。
  • 感谢您的回复。但我更愿意将我的电子邮件逻辑保留在 MVC 应用程序中,而不是转移到另一个项目中。所以,我需要一个更简单的修改,除了配置更改之外,不需要更改项目结构。无论如何,为您的建议投了+票,该建议也可以应用于其他场景。
  • 好的,但是,我建议您考虑关注点分离。我会让 MVC 应用程序关注显示网站和接收请求。例如,为网站获取数据应该拆分到不同的项目中,可能使用存储库模式。然后 MVC 应用程序和其他应用程序(任务应用程序)可以从集中存储库中获取它们的数据。然后,电子邮件任务只关心获取数据并确定将电子邮件发送给谁;它不会与旨在显示网站的代码混淆。长期的游戏是尽量减少意大利面条代码和 DRY。
猜你喜欢
  • 1970-01-01
  • 2013-04-28
  • 2013-01-06
  • 1970-01-01
  • 2010-11-29
  • 2010-11-14
  • 2020-12-20
  • 2014-10-30
  • 1970-01-01
相关资源
最近更新 更多