Sendgrid:在一个请求中将不同的邮件发送给不同的收件人

时间:2016-06-29 22:52:37

标签: c# email sendgrid

尝试使用个性化替代%body%。但是,我收到错误Substitutions are limited to 10000 bytes per personalization。基本上,整个身体会有不同的接受者。

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

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

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

2 个答案:

答案 0 :(得分:1)

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

提案#1: 您可以使用具有少数工作人员的队列(ApacheMQ或Amazon SQS)系统来处理电子邮件的发送。该队列是为了防止任何未送达的电子邮件,工作人员允许您一次发送多封电子邮件(2名工作人员,2封电子邮件并行发送)。

提案#2: 有一个简单的cronjob每隔5分钟运行一次(你需要根据你发送的电子邮件数量来计算这个数据,以及发送电子邮件的可接受延迟)并让100个客户向谁发送电子邮件,基于数据库的一列,告诉您是否已发送电子邮件,以避免向同一客户发送多封电子邮件。

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

希望它有所帮助!

答案 1 :(得分:0)

我也跑到了10000字节的限制。在我的情况下,这是一个边缘情况,所以对于这些调用,我使用常规SMTP发送添加了回退。

  1. 调用SendGrid的API并获取模板的HTML
  2. 迭代替换并替换主体和身体
  3. 迭代收件人并为每个收件人执行SMTP呼叫
  4. 不是每个人的选择,但它很容易到位。