【问题标题】:Email Notification Service电子邮件通知服务
【发布时间】:2010-09-21 17:27:42
【问题描述】:

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

【问题讨论】:

    标签: c# .net sql email


    【解决方案1】:

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

    • 考虑使用专门管理退回、退订、isp 和黑名单管理等的高质量电子邮件服务提供商。如果发送电子邮件对您的业务至关重要,但不是您的主要业务,那将是值得的。大多数将有一个用于发送模板消息、点击跟踪、打开率的 api,并将提供触发器等。
    • 查看 SQL Server Service Broker 以对实际消息进行排队,否则您可以考虑使用 Microsoft 消息队列服务。无需构建自己的排队服务。当这个问题已经解决时,我们花了太多时间处理排队基础设施代码。
    • 在您的业务层上开发一组灵活的事件,以允许触发此类消息并将它们异步放入您的队列中,从长远来看,这将为您省去很多麻烦,而不是在数据库上轮询或破解它与数据库触发器一起使用。

    【讨论】:

      【解决方案2】:

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

      这里有一个很好的article 如何在.Net 中实现CLR (.Net) 触发器。

      对于轻量级 SMPT 服务器,为了最大限度地减少延迟,您可以使用Kenny's answer 中推荐的那个。

      【讨论】:

        【解决方案3】:

        感谢大家的反馈。为简单起见,我从一个 SP 开始,它查找要发送的提醒并使用 sp_send_dbmail(SQL 数据库邮件)发送电子邮件。这每分钟都在执行一项工作。我更新了记录以表明提醒是使用从 sp_send_dbmail 发回的 MailItemId 发送的。预计的提醒量是每天 10^2 范围内的最坏情况。

        我很乐意听取有关人们认为此解决方案可能存在的任何缺点的反馈。

        顺便说一句,我不敢相信 Vista 没有配备本地 SMTP 服务器!还好 Google 比较大方,我用 Gmail 的服务器做测试。

        【讨论】:

          【解决方案4】:

          通常,我只是启动一个进程,例如http://caspian.dotconf.net/menu/Software/SendEmail/

          【讨论】:

            【解决方案5】:

            我打算建议使用 SQL Server 通知服务,它可以很好地处理这项工作。但我看到它已从 SQL Server 2008 中删除,因此您可能不想去那里。

            【讨论】:

              【解决方案6】:

              Data Driven SSRS Subscriptions?只是一个想法。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-10-10
                • 2011-12-16
                • 2015-11-26
                • 1970-01-01
                相关资源
                最近更新 更多