我们正在使用 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”对象的 name 属性就是我们要在此处显示的内容 {{to.name}}
我们正在使用示例代码中推荐的方法,并输入我们的数据。
我们的类对象:
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。这感觉像是一件很基本的事情,但我们确实花了好几个小时来做这件事:)。
为了清楚起见,我们有一个时事通讯模板,它将动态模板数据存储在我们的数据库中。我们想要查询该数据以及多个姓名/电子邮件地址以将其发送到(其中 25k 多个),用时事通讯数据填写模板并将其发送给每个收件人,并在顶部添加“Dear _____”。看起来超级基础。如果 CreateSingleTemplateEmailToMultipleRecipients 不是正确的方法,我们如何使用动态模板来做到这一点?