Sendgrid - 如何访问 "to" 电子邮件地址对象以在 v3 api C# 中个性化动态模板
Sendgrid - How do I access the "to" email address object to personalize dynamic template in v3 api C#
我们使用 Sendgrid C# 库创建了一个存储动态模板。它工作正常,除了我们无法弄清楚如何访问“to”对象以在模板中动态显示用户名。这是正在发送的 JSON:
{
"from":{
"email":"fromemail@mydomain.com"
},
"personalizations":[
{
"to":[
{
"name":"test name",
"email":"test@testingmail.com"
}
],
"dynamic_template_data":{
"MailBody":"this is a \u003cstrong\u003eTEST!\u003c/strong\u003e",
"MailSalutation":"Best Regards,",
"MailGreeting":"Dear"
}
},{
"to":[
{
"name":"another name",
"email":"anothertest@testingmail.com"
}
],
"dynamic_template_data":{
"MailBody":"this is a \u003cstrong\u003eTEST!\u003c/strong\u003e",
"MailSalutation":"Best Regards,",
"MailGreeting":"Dear"
}
}
],
"template_id":"xxxxxxxxxx-ede3cd3f9b"
}
模板看起来像这样:
<p> {{MailGreeting}} {{to.name}} or {{to[0].name}}???,</p>
<p>
{{{MailBody}}}
</p>
<p>
{{MailSalutation}}
</p>
“to”对象的名字属性就是我们这里要显示的{{to.name}}
我们正在使用示例代码中推荐的方法来输入我们的数据。
我们的class对象:
public class EmailMergeSendDetails
{
public List<EmailAddress> MailToList { get; set; }
public string MailFrom { get; set; }
public string MailFromName { get; set; }
public string MailSubject { get; set; }
public string MailBody { get; set; }
}
使用Sendgrid C#发送
var from = new EmailAddress(d.MailFrom, d.MailFromName);
var tos = d.MailToList;
var dynamicTemplateData = new EmailMergeSendDetails
{
Subject = d.MailSubject,
MailSalutation = d.MailSalutation,
MailGreeting = d.MailGreeting,
MailBody = d.MailBody,
};
var msg = MailHelper.CreateSingleTemplateEmailToMultipleRecipients(from,
tos,
"d-xxxx-template-id-here",
dynamicTemplateData
);
var response = await client.SendEmailAsync(msg);
为什么这不适用于 {{to.name}}?我猜 {{}} 唯一可用的数据是 dynamic_template_data?如果是这样,我们如何显示to.name。感觉这是一件很基本的事情,但我们确实花了几个小时:)。
为了清楚起见,我们有一个新闻稿模板,它在我们的数据库中存储动态模板数据。我们想查询该数据以及多个 name/email 地址以将其发送到(其中 25k+ 个),用时事通讯数据填写模板并将其发送给每个收件人并添加“亲爱的 _____“ 在顶部。看起来超级基本。如果 CreateSingleTemplateEmailToMultipleRecipients 不是正确的方法,我们如何使用动态模板来做到这一点?
我认为你做不到。不过,您可以向 dynamic_template_data
添加其他值;例如“RecipientName”,然后将其设置为“测试名称”,然后在模板中将其引用为 {{RecipientName}}
.
或者...按照您的做法,您可以将其添加到 MailGreeting
的末尾;例如给它一个值“亲爱的测试名称”,而不仅仅是“亲爱的”。
编辑(多封电子邮件):
通过查看包代码,我认为 CreateMultipleTemplateEmailsToMultipleRecipients()
是您想要的,并为每个 dynamicTemplateData
添加不同的 RecipientName
(或类似的),并确保您拥有tos
中的项目数与 dynamicTemplateData
.
中的项目数相同
SendGrid has a limit 每封电子邮件 1000 个个性化设置,因此您需要将 25k 分成几批。
我们使用 Sendgrid C# 库创建了一个存储动态模板。它工作正常,除了我们无法弄清楚如何访问“to”对象以在模板中动态显示用户名。这是正在发送的 JSON:
{
"from":{
"email":"fromemail@mydomain.com"
},
"personalizations":[
{
"to":[
{
"name":"test name",
"email":"test@testingmail.com"
}
],
"dynamic_template_data":{
"MailBody":"this is a \u003cstrong\u003eTEST!\u003c/strong\u003e",
"MailSalutation":"Best Regards,",
"MailGreeting":"Dear"
}
},{
"to":[
{
"name":"another name",
"email":"anothertest@testingmail.com"
}
],
"dynamic_template_data":{
"MailBody":"this is a \u003cstrong\u003eTEST!\u003c/strong\u003e",
"MailSalutation":"Best Regards,",
"MailGreeting":"Dear"
}
}
],
"template_id":"xxxxxxxxxx-ede3cd3f9b"
}
模板看起来像这样:
<p> {{MailGreeting}} {{to.name}} or {{to[0].name}}???,</p>
<p>
{{{MailBody}}}
</p>
<p>
{{MailSalutation}}
</p>
“to”对象的名字属性就是我们这里要显示的{{to.name}}
我们正在使用示例代码中推荐的方法来输入我们的数据。
我们的class对象:
public class EmailMergeSendDetails
{
public List<EmailAddress> MailToList { get; set; }
public string MailFrom { get; set; }
public string MailFromName { get; set; }
public string MailSubject { get; set; }
public string MailBody { get; set; }
}
使用Sendgrid C#发送
var from = new EmailAddress(d.MailFrom, d.MailFromName);
var tos = d.MailToList;
var dynamicTemplateData = new EmailMergeSendDetails
{
Subject = d.MailSubject,
MailSalutation = d.MailSalutation,
MailGreeting = d.MailGreeting,
MailBody = d.MailBody,
};
var msg = MailHelper.CreateSingleTemplateEmailToMultipleRecipients(from,
tos,
"d-xxxx-template-id-here",
dynamicTemplateData
);
var response = await client.SendEmailAsync(msg);
为什么这不适用于 {{to.name}}?我猜 {{}} 唯一可用的数据是 dynamic_template_data?如果是这样,我们如何显示to.name。感觉这是一件很基本的事情,但我们确实花了几个小时:)。
为了清楚起见,我们有一个新闻稿模板,它在我们的数据库中存储动态模板数据。我们想查询该数据以及多个 name/email 地址以将其发送到(其中 25k+ 个),用时事通讯数据填写模板并将其发送给每个收件人并添加“亲爱的 _____“ 在顶部。看起来超级基本。如果 CreateSingleTemplateEmailToMultipleRecipients 不是正确的方法,我们如何使用动态模板来做到这一点?
我认为你做不到。不过,您可以向 dynamic_template_data
添加其他值;例如“RecipientName”,然后将其设置为“测试名称”,然后在模板中将其引用为 {{RecipientName}}
.
或者...按照您的做法,您可以将其添加到 MailGreeting
的末尾;例如给它一个值“亲爱的测试名称”,而不仅仅是“亲爱的”。
编辑(多封电子邮件):
通过查看包代码,我认为 CreateMultipleTemplateEmailsToMultipleRecipients()
是您想要的,并为每个 dynamicTemplateData
添加不同的 RecipientName
(或类似的),并确保您拥有tos
中的项目数与 dynamicTemplateData
.
SendGrid has a limit 每封电子邮件 1000 个个性化设置,因此您需要将 25k 分成几批。