我正在使用SendGrid web API v3。尝试生成包含许多收件人的个性化对象。每个收件人都有1封电子邮件,其中包含与当前收件人相关的数据(通过替换)
示例:
personalizations: [{
to: [{email: 'example@mail.com'}],
subject: 'Hello, :name!',
substitutions: {':name': 'John', ':info_section_html':'<p>Some useful block1</p><p>Some useful block2</p>'}
},
{
to: [{email: 'example@mail.com'}],
subject: 'Hello, :name!',
substitutions: {':name': 'John', ':info_section_html':'<p>Some useful block1</p><p>Some useful block2</p><p>Some useful block3</p><p>Some useful block4</p><p>Some useful block5</p><p>Some useful block6</p>'}
}
],
from: {email: 'send@example.com'},
content: [{type: 'text/html', value: 'Hello, :name! </br> Here are your very usefull info</br> :info_section_html'}]
替换时:info_section_html
有很多这样的块,它超过了10000字节的限制。我的块比示例中的HTML要多得多。每个收件人可以拥有不同数量的块,这就是我不能将它们包含在内容属性中的原因。
还考虑了section属性,我可以传递info_section_html
的HTML。但是无法通过代替数组传递数据。
有人可以建议如何克服这个问题吗?
答案 0 :(得分:2)
我知道这已经很晚了,但是我遇到了同样的问题而无法找到答案,所以我认为在这里发布它可能会有用:
可在此处找到:SendGrid API v3
模式&#34; substitution_tag&#34;之后的键/值对的集合:&#34;替换&#34;的值。所有都被认为是字符串。除了主题和回复参数之外,这些替换将适用于电子邮件正文的文本和html内容。每个个性化对象的替换总集合大小不得超过10,000个字节。
所以这里没什么可做的。
对于这种用法,Sendgrid还有另一个名为 Sections 的功能(也请查看上面的链接)。它们的工作方式几乎与Substitutions
类似,只是它们链接到整个邮件而不是Substitution
它们可以与Substitutions
一起使用,以实现上述行为。
正如 mbernier 所说:Github issue related to the topic
您可以像这样使用它们:
"personalizations: [
{
"to: [{"email":"bob@example.com"}],
"substitutions": {
"[%product_info%]": "[%has_product%]",
},
},
{
"to":[{"email":"bob@example.com"}],
"substitutions": {
"[%product_info%]": "[%no_product%]",
},
}],
"content": [
{
"type": "text/plain",
"value": "We just wanted to tell you that we appreciate you being a long time customer! [%product info%]"
}],
"sections": {
"[%has_product%]": "Also, thanks for ordering:<br />[%product_section%].<br /> Are you ready to order again!?",
"[%no_product%]": "You haven't ordered in a while, but we'd love it if you came back and saw our new products!"
}
这里最重要的是应该通过替换标签添加这些部分。
希望这有帮助