【问题标题】:Sending scheduled email using c#使用 c# 发送预定的电子邮件
【发布时间】:2017-08-26 09:46:01
【问题描述】:

我正在开发电子邮件营销模块,用户可以在该模块中创建带有一些标准选择的 EmailCampaign,并可以向成千上万的用户发送电子邮件。

目前我找到了以下两种实现方式,但需要知道哪种方式更好用:

1)First Windows 服务以 n 分钟的间隔不断检查数据库,并将数据插入电子邮件队列表中以用于符合条件的电子邮件营销活动 &Second 服务不断从队列中获取大约 1000 条记录并发送它们。

2) 在 Web 应用程序中,在应用程序启动时获取所有创建的电子邮件活动,并使用石英(或任何其他后台作业助手)安排它们在定义的时间执行(生成队列以及发送电子邮件)。在这种方法中我相信它可能会创建内部线程,它会影响 Web 应用程序的工作吗?

【问题讨论】:

  • 许多好的问题会根据专家的经验产生一定程度的意见,但这个问题的答案往往几乎完全基于意见,而不是事实、参考资料或特定专业知识。

标签: c# asp.net email


【解决方案1】:

方法#1:与系统分离。应用程序本身没有负载。但是请定期清除您的数据库。对电子邮件表使用 UniqueIdentifier ID 而不是标识,以便清除数据不会导致间歇性号码丢失。您应该只将电子邮件模板保存在数据库中。在运行时将其绑定到数据并发送邮件。这取决于要求,但您是否需要始终将每个人发送的邮件保留在活动数据库中。

方法#2:在任何情况下,它都会对 Web 应用程序的内存消耗产生影响,并且可能会减慢您的应用程序。有多个服务器还是一个?如果有多个,他们会处理相同的数据并为相同的东西发送多封邮件。实例之间将如何同步。您可能需要在实例之间对数据进行分区。或者他们是否还会在运行时使用 SQL 数据库来获取数据进行处理。如果只有服务器,无论如何这将毫无问题地运行。

如果您在数据库中有可用的数据,如果电子邮件中不需要格式化,您也可以计划使用 SQL 数据库。 SQL 作业会更好地处理它。

此外,您可以通过一个 powershell 脚本/windows exe 来执行此操作,该脚本/windows exe 多次通过 windows 任务调度程序连接到数据库并发送邮件。

您还可以在 .net 中使用 Hangfire 进行后台处理。保持较低的后台内存消耗并使用适当的错误处理。

https://www.hangfire.io/

【讨论】:

    【解决方案2】:

    除非有一些运营/业务的东西会让#1 很痛苦,否则我会选择#1,因为以下原因......

    • 如果业务人员想要更改电子邮件格式(例如,将徽标放在左侧而不是右侧,将退订文本设为蓝色而不是绿色......),创建活动的人将不会遇到任何问题停机时间。

    • 如果他们创建针对大量用户的广告系列,则广告系列创建人员不会放慢速度。

    • 1234563有新的调整

    YMMV

    【讨论】:

      猜你喜欢
      • 2013-12-29
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 2016-04-17
      • 2015-11-05
      • 2012-02-25
      • 2010-10-01
      相关资源
      最近更新 更多