【问题标题】:Best Way to handle Bulk Mail in C#在 C# 中处理批量邮件的最佳方法
【发布时间】:2017-01-20 14:30:17
【问题描述】:

将批量电子邮件发送到某些列表的最佳方法是什么。例如。用户将从服务类别请求服务。我收到 200-20000 封符合用户条件的电子邮件,并将用户请求发送给收件人。

我已经进行了一些研究,但不确定哪个是该任务的最佳解决方案。

方法一,使用多线程启用多个 SMTP 客户端发送邮件(不知道我是否将它发送给大量收件人,如果它会杀死所有线程的服务器)http://www.aspsnippets.com/Articles/Send-Bulk-Mass-Email-in-ASPNet-using-C-and-VBNet.aspx

方法2,使用sendgrid之类的服务来管理邮件。 (我看到在营销活动中您可以管理列表/联系人。只是不确定您是否可以为模板动态生成内容并发送到特定列表)https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html

任何建议将不胜感激!

【问题讨论】:

  • 这只是我的意见,我不推荐第一种方法,因为它可能会以您的所有邮件都进入我之前遇到的垃圾邮件或垃圾邮件结束,第二步,您将使用第三方解决方案可能会在某天关闭,或者他们更改可能会影响您的设置而您不知道的配置,以防您没有通知该服务不工作。 IMO,如果您使用的是数据库管理系统,还有另一种方法,在我的情况下,我使用的是 MS-SQL Server,如下面的答案所述,如果您需要进一步的帮助,欢迎您

标签: c# multithreading email sendgrid


【解决方案1】:

你有很多不同的方式

第一种方式,我们使用它,我认为是最好的,但是您需要使用数据库来存储数据并编写一些要执行的代码:

  1. 使用以下字段创建表“EmailLogs”

个人资料名称、正文、主题、[To]、CC、BCC、IsActive、QueuedOn、SentOn

  1. 编写存储过程 ClearEmailLogs 以发送前 50 个 IsActive=1 并通过 getdate() 值更新 SentOn
  2. 在 SQL Server 中编写一个 Job,每 10 分钟执行一次
  3. 从您的应用程序中,您只需将大量消息插入到表 EmailLogs 中

ProfileName:也许您需要有许多电子邮件配置以通过不同的电子邮件发送,例如noreply@yourdomain.cominfo@yourdomain.com,在 SQL Server 中您可以为每个要使用的电子邮件创建配置文件

为什么每 10 分钟最多发送 50 封电子邮件?因为如果您经常向收件人发送电子邮件,雅虎或谷歌等其他公司可能会阻止您的电子邮件并将它们发送到垃圾邮件或垃圾邮件。

第二种方式,你可以订阅一些服务,你可以在网上找到,但是你需要为这个服务支付一些钱。

希望对你有帮助

【讨论】:

  • 把所有的应用逻辑都放到SQL server上的加速过程中是什么原因?由于许多原因,这非常糟糕,而且似乎没有什么特别需要如此奇怪的设计。这甚至根本不处理发送电子邮件的部分,只是组织代码的一种不同方式。
  • :什么?如果您想发送 1000 封电子邮件,让您的应用程序执行它们是否符合逻辑?在这种情况下,“非常糟糕”是什么?如果 SP 有什么不好的地方,他们为什么要创建一个叫做存储过程的东西,它的作用是什么?
  • @Voo 请解释您的反对意见以及使用该解决方案的问题是什么,该解决方案已经在使用中,它证明了它的性能以及它的易用性。
  • 您对“如何在 C# 中执行 X”的回答基本上是“在 TSQL 中实现应用程序逻辑”,甚至没有提及如何解决实际问题(电子邮件发送)。第 3 步毕竟是这个问题的全部内容,但它掩盖了所有细节——如何编写这样的工作?使用多个线程?如何处理和传达错误?但是如果你能解释是什么平衡了使用 TSQL 的所有缺点(没有可移植性、维护麻烦、糟糕的调试工具、非常有限的并发工具、C# 开发人员 [见标签] 现在必须编写 TSQL),那至少有趣
  • 我曾经看问题并直接提供解决方案以帮助提出问题的人,今天我得到了新提示,有些问题应该像提到的标签那样专用,我假设他正在使用 C# 和 ASP.NET,这意味着他正在使用数据库,所以我可以为他的情况提供解决方案,谢谢
猜你喜欢
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多