【问题标题】:Sendgrid: Send distinct mails to different recipients in one requestSendgrid:在一个请求中向不同的收件人发送不同的邮件
【发布时间】:2016-11-01 20:29:36
【问题描述】:

尝试使用带有替换的个性化,例如%body%。但是,我收到一条错误消息 Substitutions are limited to 10000 bytes per personalization。基本上整个身体都会因接受者而异。

是否有另一种有效的方式将不同的邮件发送给不同的收件人?

每个请求发送一封邮件会很慢。

请注意:模板不是一个选项,因为邮件是根据用户当前的活动创建的。

【问题讨论】:

标签: c# email sendgrid


【解决方案1】:

我认为您的要求在 Sendgrid 的 API 下根本不可能。他们已经为您提供了包含变量(10000 字节)的选项。

建议 #1: 您可以使用带有几个工作人员的队列(ApacheMQ 或 Amazon SQS)系统来处理电子邮件的发送。队列是为了防止任何邮件没有送达,workers 是为了让你一次发送多于一封邮件(2 个 worker,2 个邮件并行发送)。

建议 #2: 有一个简单的 cronjob,每 5 分钟运行一次(您需要根据必须发送的电子邮件数量以及发送电子邮件的可接受延迟时间来计算),并获得 100 个发送电子邮件的客户,基于数据库中的一列,用于告诉您是否已发送电子邮件,因此您可以避免向同一客户发送多个电子邮件。

理想情况下,我会坚持第一个提案,但它可能需要更多的工作。您可以从#2 开始,然后一点一点地处理#1。

希望对你有帮助!

【讨论】:

  • 我目前使用的是#2方式。一个接一个地立即发送邮件。我不知道对 Sendgrid 的 API 调用次数是否有限制。
  • 你需要检查一下,但我相信他们或多或少没问题,只要你向同意你向他们发送电子邮件的人发送电子邮件,并且因为你按发送的电子邮件付费, Sendgrid 应该没问题。
【解决方案2】:

我也达到了 10000 字节的限制。在我的情况下,这是一个边缘情况,因此对于这些调用,我使用常规 SMTP 发送添加了一个后备。

  1. 调用 SendGrid 的 API 并获取模板的 HTML
  2. 迭代替换并替换主题和正文
  3. 迭代收件人并为每个收件人执行 SMTP 调用

不是每个人都可以选择,但很容易就位。

【讨论】:

  • 我也做过类似的事情,手动替换 html 中的元素并发送单独的电子邮件。然而,这个过程是缓慢的。如果 sendgrid 中有一种方法可以在一个电话中发送每封邮件,那就太好了。节省时间和 CPU 使用率。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多