json AWS SES模板html部件为多行

0kjbasz6  于 2023-08-08  发布在  其他
关注(0)|答案(4)|浏览(104)

我正在使用AWS SES按照文档https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html发送电子邮件。示例模板中的HTML部分太短,但我需要一个包含多行的长HTML部分。例如,它有如下几行:

  1. {
  2. "Template": {
  3. "TemplateName": "Group_Invitation",
  4. "SubjectPart": "{{who}} has invited you to join team {{group_name}}",
  5. "TextPart": "",
  6. "HtmlPart": ["<!doctype html>
  7. <html>
  8. <head>
  9. <meta charset="utf-8">
  10. </head>
  11. <body>{{name}}</body>
  12. </html>"]
  13. }
  14. }

字符串
我无法上传此模板。它将显示错误

  1. Error parsing parameter 'cli-input-json': Invalid JSON: Invalid control character at: line 6 column 32 (char 182)
  2. JSON received: {
  3. "Template": {
  4. "TemplateName": "Group_Invitation",
  5. "SubjectPart": "{{who}} has invited you to join team {{group_name}}",
  6. "TextPart": "",
  7. "HtmlPart": ["<!doctype html>
  8. <html>
  9. <head>
  10. <meta charset="utf-8">
  11. </head>
  12. <body>{{name}}</body>
  13. </html>"]
  14. }
  15. }


我不知道如何处理多行的htmlpart。

iyzzxitl

iyzzxitl1#

您发送的数据应预先格式化为有效的JSON文件。为了确保它是有效的,你需要转义一些特殊的字符:

*双引号“转义为\”
*反斜杠\转义为\
*新行

转义为\n

*回车转义\r

您可以使用一些在线工具来验证JSON。其中一个是jsonlint.com
还要注意,HTML中的新行表示为<br />,而不是文件中的文字新行。
你的JSON文件格式应该如下:

  1. {
  2. "Template":{
  3. "TemplateName": "Group_Invitation",
  4. "SubjectPart": "{{who}} has invited you to join team {{group_name}}",
  5. "TextPart": "",
  6. "HtmlPart": "<!doctype html><html><head><meta charset=\"utf-8\"></head><body>{{name}}<br />some text on the other line</body></html>"
  7. }
  8. }

字符串
您也可以使用JSON Escape/ Unescape工具,粘贴您的HtmlPart,快速替换所有新行,使其通过JSON发送有效。
转义HtmlPart

  1. <!doctype html>\r\n <html>\r\n <head>\r\n <meta charset=\"utf-8\">\r\n <\/head>\r\n <body>{{name}}<\/body>\r\n <\/html>


你现在可以把这个字符串,引用它,并使用它作为HtmlPart。正如你所看到的,这个工具也可以转义正斜杠,但它不是必需的,正如this回答中所述

展开查看全部
oxcyiej7

oxcyiej72#

如果您尝试使用create-email-template API使用AWS CLI v2完成此操作,则模板已更改,现在看起来不同。您可以通过以下方式获取模板 backbone :

  1. > aws sesv2 create-email-template --generate-cli-skeleton
  2. {
  3. "TemplateName": "",
  4. "TemplateContent": {
  5. "Subject": "",
  6. "Text": "",
  7. "Html": ""
  8. }
  9. }

字符串

p5cysglq

p5cysglq3#

这对我来说是一个大的HTML文件。首先转到:Remove Line Breaks,选择选项Remove line breaks and paragraph breaks,然后将其输出粘贴到JSON转义工具中,然后在HtmlPart中使用它。

zsohkypk

zsohkypk4#

另一种解决方案是使用yaml文件上传模板内容。这是我正在使用的一个例子。
下面是update命令:第一个月
下面是yaml文件的内容。

  1. TemplateContent:
  2. Subject:
  3. Charset: UTF-8
  4. Data: Example subject line
  5. Text:
  6. Charset: UTF-8
  7. Data: Example text content
  8. Html:
  9. Charset: UTF-8
  10. Data: |
  11. <html>
  12. <body>
  13. <h1>Example HTML content</h1>
  14. </body>
  15. </html>

字符串
Yaml允许HTML部分的多行输入。

展开查看全部

相关问题