繁体   English   中英

我应该使用.NET(System.Net.Mail)批量发送我的Web应用程序的电子邮件或SQL(msdb.sp_send_dbmail)吗?

[英]Should I use .NET (System.Net.Mail) to batch send my web application's emails or SQL (msdb.sp_send_dbmail)?

场景:

1)我的应用程序是.NET 3.5 C#Web应用程序,数据库是SQL 2008。

2)电子邮件将在每天100到1000的范围内,并由各种Web用户与应用程序的交互触发。

3)大多数电子邮件将包含50KB到5MB之间的附件。 有些电子邮件是HTML,有些则是纯文本。

4)所有附件都将来自Web服务器上的目录。

5)SQL Server是Web服务器的独立机器。 来自应用程序的所有SQL连接都是通过SQL登录而不是Windows身份验证。

6)对于可扩展的解决方案,要发送的电子邮件将在数据库表中排队,以便批量处理进行提取。 失败的电子邮件最多应重试4次。

困境:

我不确定是否要编写Web服务器解决方案来发送电子邮件(例如,用于轮询准备发送的电子邮件的Windows服务),或者可能使用易于设置和使用且不需要太多开发的SQL数据库邮件。

附件放在Web服务器上的事实告诉我使用Web服务器解决方案但我有兴趣看看我是否遗漏了一些东西。

我想你已经回答了自己的问题。 由于您已选择在IMO数据库中对电子邮件进行排队,因此在Web服务器上创建托管解决方案以发送电子邮件几乎没有什么优势。

我要考虑的一件事是你将附件存储在网络服务器上,这意味着网络服务器和数据库之间的网络流量会比网络服务器发送电子邮件的数量多(假设它们运行在不同的物理服务器上)。 使用您的附件每天5GB流量的数字。 但是,我会使用数据库解决方案并严格测试以查看流量​​是否成为问题。 如果是这样,您没有在数据库解决方案上浪费太多时间。

我会使用.NET而不是从数据库发送电子邮件。 在.NET中发送电子邮件也非常简单,不需要任何广泛的设置或开发时间。

在相关的说明中,我不知道为什么SQL Server可以发送电子邮件,因为此功能似乎不适合数据存储模型。 SQL Server是否也进行3D渲染?

首先,要警惕每天发送1000封电子邮件。 这是从其他邮件服务器甚至您的Internet提供商列入黑名单的好方法。 其次,我建议使用.NET例程。 这个问题很糟糕。 即使您今天没有将其构建为服务,您可能希望在将来的某个时候这样做。 使用.NET,您可以重构解决方案以并行发送电子邮件或以多线程方式访问队列。 所有这些在SQL Server中都很难。 简而言之,.NET使您能够创建比SQL Server更具扩展性的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM