1

I got this error when sending email with Amazon SES:

BadRequestException: Unable to parse template data (invalid JSON).

When creating the template it does not raise any error:

aws ses create-template --cli-input-json file://awsTemplateWelcome.json
{
    "Template": {
        "TemplateName": "welcome",
        "SubjectPart": "{{subject}}",
        "TextPart": "",
        "HtmlPart": "<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\r\n  <head>\r\n    <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\" \/>\r\n    <title>Jelentkez\u00E9s<\/title>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\r\n    <style>\r\n      table,\r\n      td,\r\n      div,\r\n      h1,\r\n      p {\r\n        font-family: Arial, sans-serif;\r\n        font-size: 16px;\r\n      }\r\n    <\/style>\r\n  <\/head>\r\n  <body style=\"margin: 0; padding: 0;\">\r\n    <table\r\n      align=\"center\"\r\n      border=\"0\"\r\n      cellpadding=\"0\"\r\n      cellspacing=\"0\"\r\n      width=\"600\"\r\n    >\r\n      {{welcomeMessage}}\r\n        {{ticketManagingInfos}}\r\n      <tr>\r\n        <td style=\"padding: 30px 0px 30px; text-align: center;\">\r\n          <img\r\n            src=\"https:\/\/ticket-t01.s3.eu-central-1.amazonaws.com\/{{imgId}}_0.cover.jpg\"\r\n            width=\"600\"\r\n            alt=\"Cover\"\r\n            style=\"\r\n              height: auto;\r\n              border: none;\r\n              text-decoration: none;\r\n              color: #ffffff;\r\n            \"\r\n          \/>\r\n        <\/td>\r\n      <\/tr>\r\n    <\/table>\r\n  <\/body>\r\n<\/html>\r\n"
    }
}

https://jsonlint.com approves JSON


Calling sendEmail from Vapor:

let template = SESV2.Template(templateArn: nil, templateData: d2, templateName: "welcome")
let content = SESV2.EmailContent(raw: nil, simple: nil, template: template)
let destination = SESV2.Destination(bccAddresses: nil, ccAddresses: nil, toAddresses: [emailTo])
let sendEmailRequest = SESV2.SendEmailRequest(configurationSetName: nil, content: content, destination: destination, emailTags: nil, feedbackForwardingEmailAddress: nil, feedbackForwardingEmailAddressIdentityArn: nil, fromEmailAddress: emailFrom, fromEmailAddressIdentityArn: nil, listManagementOptions: nil, replyToAddresses: nil)
return ses.sendEmail(sendEmailRequest).map { response in
    if let messageId = response.messageId {
        print("Welcome message sent transactionId: \(ti.id!) messageId: \(messageId)")
        fflush(stdout)
    } else {
        print("Error when sending welcome message")
        fflush(stdout)
    }
}
János
  • 32,867
  • 38
  • 193
  • 353
  • I am calling `sendEmail` from Vapor – János Aug 20 '21 at 18:46
  • No Idea if this is your solution but it might help: https://stackoverflow.com/a/66328261/4952537 Btw. I remember having the same issue a few years ago with SES but I can't recall what my solution was. Trying hard to remember. – Getter Jetter Aug 20 '21 at 19:31
  • Hi, it uses not ses but sesv2 method, but anyway it raise the same issue. – János Aug 21 '21 at 07:34

0 Answers0