将数据保存在SQL Server数据库中,然后再发送电子邮件

时间:2010-09-29 07:10:34

标签: asp.net sql-server-2005 html-email

我有一个数据输入和编辑表单,在每个数据输入或更新事件中,我都必须向动态收件人列表发送电子邮件。我一直在用户点击保存或编辑按钮时发送电子邮件,但我想先将数据保存到数据库,然后再发送电子邮件。我想这样做部分是为了改善应用程序的响应时间,因为电子邮件发送往往需要很长时间。

有没有人做过一些与此有关的事情,是否有更好的方法来实现类似的东西,或者知道一个很好的教程。

电子邮件正文是html格式的。

3 个答案:

答案 0 :(得分:2)

您可以编写处理发送电子邮件的Windows服务,然后使用Message Queue作为将数据从应用程序传递到服务的方法。即您的应用程序保存数据,然后向队列添加消息。该服务不断轮询队列中的消息,将每个消息作为电子邮件发送。

答案 1 :(得分:1)

我同意ck关于使用服务和消息队列,但有一些替代方案。

一种是使用定期轮询数据库的服务。这使您可以以更高的CPU负载为代价来避免消息队列(该服务将执行许多不必要的数据库调用)。

您也可以使用数据库触发器或数据库中的预定作业直接在数据库中执行此操作。最新版本的SQL Server支持运行用C#或Vb.Net编写的存储过程,因此您可以在这里重用大部分现有代码。

最后,您可以找到一个简单的解决方案,您可以在asp.net应用程序中的单独线程上发送电子邮件。这样您就可以避免使用服务应用程序,并且可以像现在这样或多或少地重用代码。

答案 2 :(得分:0)

执行此操作的一种方法是写入数据库,然后在队列上发送消息,该队列告诉电子邮件服务(写为Windows服务)有电子邮件要发送。然后,电子邮件服务与数据库进行通信,以查找实际需要执行的操作。这将电子邮件服务与Web应用程序分离,也避免了轮询。

这与ck的解决方案略有不同,因为队列消息用作触发器而不是包含电子邮件信息。这在一定程度上将Web应用程序和电子邮件服务分离,并且意味着多个客户端可以重用电子邮件服务,而不必每个客户端都必须观察(并与之保持同步)相同的电子邮件消息格式。