【问题标题】:Why would you send email in a batch instead of sending individually?为什么要批量发送电子邮件而不是单独发送?
【发布时间】:2011-10-23 14:04:27
【问题描述】:

我们有一个 Windows 服务来检查是否满足某些条件,我们将向客户发送电子邮件。我们每天将发送大约 50 封电子邮件。我的问题是,是单独发送电子邮件(即每次满足条件时触发 sendmail 功能)还是将所有电子邮件排队并批量发送更好?由于性能原因,批量发送是否更好?但是我们每天只发送大约 50 封电子邮件,所以没关系?如果要批量发送电子邮件,您将如何对电子邮件进行排队?

非常感谢

【问题讨论】:

  • “但我们每天只发送大约 50 封电子邮件,所以没关系” - 问和回答。
  • 最好将电子邮件发送到您的邮件服务器并让它处理排队细节。
  • @Joel Mueller,目前我们每天大约有 50 封电子邮件,但未来可能会增加。 :)

标签: c# email batch-processing


【解决方案1】:

一般来说,将多封电子邮件打包成一封电子邮件的原因是为了不刺激收件人,而不是出于性能原因。一天中 50 封电子邮件可能会非常烦人,并且会很快导致收件人“收听”,而包含所有相关通知的一封电子邮件可能更容易消化。

至于如何重新排队电子邮件,最好可以修改服务本身,将外发电子邮件存储在一个文件或缓冲区中,并且只发送该文件或缓冲区的内容一次已达到某个阈值 - 无论是时间阈值还是大小阈值。

【讨论】:

  • 我理解这是总共 50 封邮件,而不是每个收件人 50 封邮件。
  • 对不起,我应该说得更清楚。这 50 封电子邮件可能会发送给 50 个不同的客户。
  • 啊。我为我的误会道歉。在这种情况下,请忽略我的回答。 (我将把它留在这里,以免其他人以同样的方式误解这个问题。)
【解决方案2】:

如果您每天只发送 50 封电子邮件,那么这一点完全没有实际意义。

就实际服务器而言,SMTP 不关心您是批量发送还是单独发送,它只是通过电子邮件积压队列发送出去。

唯一真正关心的应该是您是否需要不断地查询您的数据库以发送电子邮件,或者您是否想要查询您的数据库以发送批量电子邮件(以减少数据库查询)。

【讨论】:

  • Windows服务本身的性能如何?假设我有一个循环来检查条件,如果满足条件,我会发送一封电子邮件。这可以优化吗?谢谢。
  • 无论您选择如何实现 Windows 服务,这一切都归结为对 SendMessageSendToMSPickupDirectory 或其某些变体的 X 调用。但是,您的服务不应该真正检查条件。您的数据库查询应该为服务提供一组要发送的优质电子邮件,而数据库查询则选择发送的内容。通常。
【解决方案3】:

忽略性能,您需要记住另一件事:用户是否需要在满足条件后立即收到该电子邮件?如果是这样,甚至不要考虑将消息排队,除非您几乎不断地清空队列。

否则,这完全取决于您。每天 50 封电子邮件不会破坏您的服务器,所以我不会担心性能问题。另一方面,如果方便您和您的用户批量发送电子邮件,那就去吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    相关资源
    最近更新 更多