应用邮件架构

时间:2010-02-20 04:06:37

标签: c# sql-server email architecture

我使用mssql 2k8数据库继承了一个用c#编写的ASP.NET网站,该数据库通过使用数据库邮件的触发器将基于插入的电子邮件发送到消息表中:其中一个失败和太多东西回滚,都没有记录,也没有发送电子邮件......

真是一团糟。我以前写了几个电子邮件子系统,我想在开始重写之前我会要求输入。在Microsoft环境中排队/发送电子邮件的最佳做法是什么?我应该将电子邮件推送到队列,从那里拉,发送,记录?数据库电子邮件似乎失败了。队列是在SQL Server中管理的吗? SQL Server是否调用C#应用程序?如果电子邮件发送失败,那么恢复的好方法是什么?

感谢您的任何见解!

3 个答案:

答案 0 :(得分:2)

我认为完全区分系统功能的使用是正确的:将SQL用于数据,并将电子邮件发送到完全不同的“服务提供商”;我假设你有某种业务逻辑层来协调这个?

我无法根据经验(特别是电子邮件)谈论'最佳实践',但是抽象出电子邮件服务(就像你抽象出数据访问一样)肯定是在正确的道路上,那就是可能是你现在需要做出的关键决定。然后,您可以拥有不同的电子邮件实现(包括SQL,如果您真的想要的话)。

根据卷而定 - 您是在查看异步调用还是同步调用? WCF似乎是处理通信的一个很好的候选者 - 这将允许您将数据(用于电子邮件)发送到具有内置队列的端点,或者您可以调用(通过WCF)同步操作的Web服务。 / p>

答案 1 :(得分:0)

您可以通过sql-server发送邮件。有关详情,请参阅this

它的架构是here

通过c#发送邮件的另一个实现是this,因为他们已经开发了一个电子邮件工厂来实现...希望这有帮助

答案 2 :(得分:0)

sp_send_dbmail将邮件请求放入msdb中的队列中。在发送邮件提交的事务之后,队列会激活处理SMTP传递的外部进程,包括重试,日志记录等等。整体系统具有很强的弹性,可扩展性和高性能。

也许您正在使用旧的,已弃用的基于xp_sendmail的系统?