使用非旧版模板获取 "Cannot use dynamic template data with a legacy template"
Getting "Cannot use dynamic template data with a legacy template" with non-legacy template
我正在尝试与 Sendgrid 集成,但玩得很开心。我创建了一个动态模板 - 一个新模板,而不是旧模板 - 其中有一个手柄 (first_name)。它有一个主题。但是我遇到了很多错误,需要一些帮助。
首先是代码:
public void sendEmail(String toEmail, String toName) throws IOException {
String fromEmail = "validated-sendgrid-address@example.com";
String fromName = "Blah blah";
SendGrid sendGrid = new SendGrid("the_api_key");
Request request = new Request();
try {
request.setMethod(Method.POST);
request.setEndpoint("mail/send");
String body = "see below...";
request.setBody(body);
Response response = sendGrid.api(request);
System.out.println(response.getStatusCode());
System.out.println(response.getBody());
System.out.println(response.getHeaders());
} catch (IOException ex) {
throw ex;
}
}
几乎完全取自 Java 示例代码。
JSON 主体,印刷漂亮...
{
"from": {
"email": "validated-sendgrid-address@example.com",
"name": "Blah blah"
},
"personalizations": [
{
"to": [
{
"email": "stdunbar@example.com",
"name": "Blah Blah"
}
],
"dynamic_template_data": {
"first_name": "Babaloo"
}
}
],
"template_id": "[d-lotsandlotsofcharacters]"
}
然后是一堆毫无意义的错误(所有这些 link 到 404):
- 不能使用具有旧模板 ID 的动态模板数据 -
I'm not using a legacy template id according to the UI
- template_id 必须是有效的 GUID,您提供了 '[d-xxxxxxxxxxxxxx]' -
I sent what I was given on the UI
.
- 主题为必填项。如果您使用定义了主题的模板,或者如果每个个性化都定义了主题,则可以绕过此要求。 -
My template has a subject
- 除非提供有效的 template_id,否则内容参数是必需的。必须至少有一个已定义的内容块。我们通常建议同时包含 text/plain 和 text/html 块,但只需要一个块。 -
A valid template_id was provided
我猜第一个问题是 template_id
字段。奇怪的是 JSON 值中包含数组 open/close。将值作为文本放入其中会产生解析错误,因此 Sendgrid 必须直接接受它。
任何 定向帮助将不胜感激。文档相当具有挑战性
此处为 Twilio SendGrid 开发人员布道师。
在您的示例中,您将 template_id
显示为 "template_id": "[d-lotsandlotsofcharacters]"
。 template_id
中不需要方括号,它应该只是 "template_id": "d-lotsandlotsofcharacters"
.
documentation for sending an email with a dynamic template 确实将 template_id
示例显示为 "template_id":"[template_id]"
,但应将整个 [template_id]
字符串替换为真实 ID。
我遇到了同样的错误。我未能正确复制模板 ID。单击 SendGrid 控制面板侧栏中的“电子邮件 API ➔ 动态模板”时会显示模板 ID。它与您从 /v3/designs
端点获得的 ID 不同,唉。
错误消息不明确。它说 "Cannot use dynamic template data with a legacy template ID"
,而实际上它应该说 "Template ID not found"
。我误以为我的模板是旧版本,但事实并非如此。四个小时我再也回不来了。
我正在尝试与 Sendgrid 集成,但玩得很开心。我创建了一个动态模板 - 一个新模板,而不是旧模板 - 其中有一个手柄 (first_name)。它有一个主题。但是我遇到了很多错误,需要一些帮助。
首先是代码:
public void sendEmail(String toEmail, String toName) throws IOException {
String fromEmail = "validated-sendgrid-address@example.com";
String fromName = "Blah blah";
SendGrid sendGrid = new SendGrid("the_api_key");
Request request = new Request();
try {
request.setMethod(Method.POST);
request.setEndpoint("mail/send");
String body = "see below...";
request.setBody(body);
Response response = sendGrid.api(request);
System.out.println(response.getStatusCode());
System.out.println(response.getBody());
System.out.println(response.getHeaders());
} catch (IOException ex) {
throw ex;
}
}
几乎完全取自 Java 示例代码。
JSON 主体,印刷漂亮...
{
"from": {
"email": "validated-sendgrid-address@example.com",
"name": "Blah blah"
},
"personalizations": [
{
"to": [
{
"email": "stdunbar@example.com",
"name": "Blah Blah"
}
],
"dynamic_template_data": {
"first_name": "Babaloo"
}
}
],
"template_id": "[d-lotsandlotsofcharacters]"
}
然后是一堆毫无意义的错误(所有这些 link 到 404):
- 不能使用具有旧模板 ID 的动态模板数据 -
I'm not using a legacy template id according to the UI
- template_id 必须是有效的 GUID,您提供了 '[d-xxxxxxxxxxxxxx]' -
I sent what I was given on the UI
. - 主题为必填项。如果您使用定义了主题的模板,或者如果每个个性化都定义了主题,则可以绕过此要求。 -
My template has a subject
- 除非提供有效的 template_id,否则内容参数是必需的。必须至少有一个已定义的内容块。我们通常建议同时包含 text/plain 和 text/html 块,但只需要一个块。 -
A valid template_id was provided
我猜第一个问题是 template_id
字段。奇怪的是 JSON 值中包含数组 open/close。将值作为文本放入其中会产生解析错误,因此 Sendgrid 必须直接接受它。
任何 定向帮助将不胜感激。文档相当具有挑战性
此处为 Twilio SendGrid 开发人员布道师。
在您的示例中,您将 template_id
显示为 "template_id": "[d-lotsandlotsofcharacters]"
。 template_id
中不需要方括号,它应该只是 "template_id": "d-lotsandlotsofcharacters"
.
documentation for sending an email with a dynamic template 确实将 template_id
示例显示为 "template_id":"[template_id]"
,但应将整个 [template_id]
字符串替换为真实 ID。
我遇到了同样的错误。我未能正确复制模板 ID。单击 SendGrid 控制面板侧栏中的“电子邮件 API ➔ 动态模板”时会显示模板 ID。它与您从 /v3/designs
端点获得的 ID 不同,唉。
错误消息不明确。它说 "Cannot use dynamic template data with a legacy template ID"
,而实际上它应该说 "Template ID not found"
。我误以为我的模板是旧版本,但事实并非如此。四个小时我再也回不来了。