.net 如何从发送网格中获取发送给多个收件人的单封电子邮件的电子邮件活动状态

yc0p9oo0  于 2022-12-20  发布在  .NET
关注(0)|答案(1)|浏览(82)

我正在向“收件人”列表中的多个收件人发送电子邮件(带有自定义参数),但只收到一个邮件ID。
现在我尝试使用sendgrid email activity API来获取电子邮件状态,方法是通过提供自定义参数来使用查询。
在此电子邮件活动的响应中,我只接收到一个收件人的状态,但没有获得其他收件人的状态。
在发送电子邮件或搜索电子邮件活动时,我是否遗漏了什么?
我曾尝试在sendgrid中搜索同一封电子邮件,我可以看到单个收件人的状态,但无法使用电子邮件活动获得相同的信息

z31licg0

z31licg01#

在做了一些研究和调查之后,我可以解决这个问题。
我试着通过改变邮件活动API中的查询来搜索不同的邮件,我发现它返回了多封邮件,因此,我可以看到从sendgrid响应返回了一系列邮件。
为了深入了解此问题,我向多个收件人发送了一封电子邮件。在发送网格活动中,我验证了每个收件人的电子邮件,以查看是否存在任何差异导致我的过滤器不返回数据。
我发现当一封邮件被发送给多个收件人时,自定义参数只被添加到收件人电子邮件地址的第一个收件人,抄送的第一个收件人等。
下面是我用C#发送邮件的代码。

SendGridMessage msg = MailHelper.CreateSingleEmailToMultipleRecipients(from, recipients, subject, plainText, htmlContent);
msg.AddCustomArgs(uniqueArgs);
SendGrid.Response response = await client.SendEmailAsync(msg);

它从不将这些自定义参数附加到其他接收者。
要解决这个问题,我必须使用“AddGlobalCustomArgs”而不是“AddCustomArgs”来向邮件添加参数,这将向所有收件人邮件添加参数。

msg.AddGlobalCustomArgs(uniqueArgs);

使用此选项发送邮件后,自定义参数将添加到所有收件人邮件中。已为作为Sendgrid活动的一部分发送的每个收件人邮件验证此选项。
现在,尝试运行电子邮件API与相同的查询过滤器,我有,现在我可以检索所有的电子邮件,我已经发送了自定义参数。
希望这个答案能有所帮助

相关问题