来自现有基于 SQL 的应用程序的电子邮件通知
本文关键字:应用程序 电子邮件 通知 SQL | 更新日期: 2023-09-27 17:56:49
我正在尝试建立将电子邮件通知与现有定制CRM应用程序一起使用的最佳选择。
从本质上讲,我想做的是在受影响的用户之一工作项违反其 KPI(关键绩效指标)时向其发送电子邮件。
我最好通过使用 SQL 触发器和存储过程(它们都可以用于实现此目的吗?)来执行此操作,还是应该使用一些 c# 编码和计划任务?还是我错过了一条更简单的路线?
我在使用 Windows 服务之前已经这样做了,该服务每分钟轮询一次数据库,然后撰写和发送电子邮件。
我想触发器是另一种可能的方法,但如果发送电子邮件失败怎么办?无论如何,您可能希望像计划任务方法一样进行某种回退。
类似 Quartz.Net 的东西,它是一个调度引擎。它能够以定义的时间间隔/定义的时间运行任务,也可以在任务失败时重试,或以某种方式提醒您。
Quartz.Net 可通过NuGet(或添加库包)获得,并且在其网站上有很多很好的文档
我个人会使用 SQL 代理作业来撰写电子邮件,然后发送。通过这种方式,您可以为要运行的作业指定某些凭据(例如,访问邮件服务器),并且可以根据需要随时运行它。
我目前使用的方法是一个简单的 CLR 存储过程,它利用 .Net 中的 SMTP 功能,这需要一堆构造电子邮件的参数。
如果您询问在SQL Server 2005中发送电子邮件的最佳方式,我认为[msdb.dbo.sp_send_dbmail]是您的朋友。 您可以在 Web 上进行快速搜索以获取详细信息,但在使用它之前必须正确设置数据库邮件。 我将它与 tsqlunit 一起使用来运行夜间作业,以捕获某些业务规则是否合规。
相反,如果您正在寻找一种捕获事件的好方法以便能够发送电子邮件通知,这完全取决于您的设置以及您希望此检查发生的频率。 它可以是附加到现有存储过程的内容,也可以使用触发器(如果您的设置可以处理它)。 有时,最好从小处着手,在吸取一些教训后迁移到更好的东西。
希望这有帮助!