2008-11-10 144 views
5

有什么想法(使用.NET和SQL 2005)来实现发送电子邮件的服务?电子邮件将由数据驱动。电子邮件发送的日期和时间是表格中的一个字段。电子邮件通知服务

回答

1

您可以使用触发器在UPDATE/DELETE/INSERT上发送电子邮件。触发器可以使用.Net实现,只需使用System.Net.Mail命名空间中的类发送邮件即可。

这里是一个很好article如何实现CLR(.NET)触发.NET。

对于轻量SMPT服务器,并且延迟最小化,你可以使用一个,在Kenny's answer建议。

0

我会建议SQL Server通知服务,这将很好地完成这项工作。但是我发现它已经从SQL Server 2008中删除了,所以你可能不想去那里。

2

我已经建立了几个高容量的电子邮件通知服务,用于发送数据驱动的电子邮件过去。有几个建议:

  • 考虑使用专门管理反弹,退订,ISP和黑名单管理等,如果发送电子邮件对您的业务至关重要的一个优质的电子邮件服务提供商,而不是你的主要业务是将是值得的。大多数将对模板发送消息的API,点击跟踪,打开率,将有提供触发器等
  • 查找到SQL Server服务代理排队实际的消息,否则,你可以考虑微软消息队列服务。没有必要建立你自己的排队服务。当这个问题已经解决时,我们花费了太多的时间处理排队基础架构代码。
  • 制定一套灵活的事件对你的业务层,以允许此类消息的触发,并把它们放在你的队列异步,这会为你节省很多悲伤的,从长远来看,而不是投票的DB或者盗号的与数据库触发器。
1

谢谢大家的反馈意见。为了简单起见,我开始使用SP查找要发送的提醒,并使用sp_ send_dbmail(SQL数据库邮件)发送电子邮件。这每分钟都在工作上运行。我更新记录以指示使用从sp_ send_dbmail发回的MailItemId发送提醒。预计提醒量是每天10^2范围内的最差情况。

我很想听听有人认为这个解决方案可能存在的缺点的反馈。

顺便说一句,我不能相信Vista不拿出一个本地的SMTP服务器!幸运的是Google更加慷慨,我使用Gmail的服务器进行测试。