json AWS SES模板html部件为多行

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

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

{
    "Template": {
        "TemplateName": "Group_Invitation",
        "SubjectPart": "{{who}} has invited you to join team {{group_name}}",
        "TextPart": "",
        "HtmlPart": ["<!doctype html>
            <html>
            <head>
            <meta charset="utf-8">
            </head>
            <body>{{name}}</body>
            </html>"]
    }
}

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

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


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

iyzzxitl

iyzzxitl1#

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

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

转义为\n

*回车转义\r

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

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

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

<!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 :

> aws sesv2 create-email-template --generate-cli-skeleton
{
    "TemplateName": "",
    "TemplateContent": {
        "Subject": "",
        "Text": "",
        "Html": ""
    }
}

字符串

p5cysglq

p5cysglq3#

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

zsohkypk

zsohkypk4#

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

TemplateContent:
  Subject:
    Charset: UTF-8
    Data: Example subject line
  Text:
    Charset: UTF-8
    Data: Example text content
  Html:
    Charset: UTF-8
    Data: |
    <html>
      <body>
        <h1>Example HTML content</h1>
      </body>
    </html>

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

相关问题