代码之家  ›  专栏  ›  技术社区  ›  Bennett Dill

应用程序电子邮件架构

  •  2
  • Bennett Dill  · 技术社区  · 16 年前

    我继承了一个用C语言编写的ASP.NET网站,它使用的是一个MSSQL2K8数据库,该数据库通过使用数据库邮件的触发器发送基于插入到消息表的电子邮件:任何一个失败和太多的回滚都不会被记录,也不会发送电子邮件…

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

    谢谢你的洞察力!

    3 回复  |  直到 15 年前
        1
  •  2
  •   Tom H zenazn    15 年前

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

    我不能从经验(特别是电子邮件)中谈论“最佳实践”,但是抽象出电子邮件服务(就像抽象出数据访问一样)肯定是正确的,这可能是您现在需要做的关键决策。然后,您可以拥有电子邮件的不同实现(如果您真的想,还可以包括SQL)。

    取决于卷-您是查看异步调用还是同步调用?wcf似乎是处理通信的好人选——这将允许您将数据(用于电子邮件)发送到一个内置队列的端点,或者您可以(通过wcf)调用一个同步运行的Web服务。

        2
  •  0
  •   HotTester    16 年前

    您可以通过SQL Server发送邮件。更多参考 this

    它的架构是 here

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

        3
  •  0
  •   Remus Rusanu    16 年前

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

    也许你用的是旧的,弃用的 xp_sendmail 基于系统?