SendTemplatedEmail 작업을 사용하여 Amazon SES 이메일을 전송할 때 이메일이 전송되지 않는 이유는 무엇입니까?

최종 업데이트 날짜: 2021년 3월 25일

SendTemplatedEmail 작업을 사용하여 Amazon Simple Email Service(Amazon SES) 계정에서 메시지를 전송하려고 합니다. 그러나 일부 이메일이 전송되지 않습니다. 이 오류에 대해 자세히 알아보려면 어떻게 해야 합니까?

해결 방법

이메일 템플릿을 사용하는 경우 Amazon SES는 사용자가 보낸 템플릿 데이터가 템플릿에 필요한 변수를 포함하는지 검증합니다. 템플릿 데이터에 규칙에 맞지 않거나 누락된 변수가 있는 경우 Amazon SES는 이메일을 전송할 수 없습니다. 이를 렌더링 오류라고 합니다.

SendTemplatedEmail 작업을 사용하여 이메일이 전송되지 않은 이유를 확인하려면 Amazon Simple Notification Service(Amazon SNS)를 사용하여 렌더링 오류 이벤트 알림을 설정합니다.

렌더링 오류 이벤트 알림을 설정하면 템플릿 기반 이메일 전송에 실패한 경우 Amazon SNS 알림을 수신합니다. 알림 오류 메시지에는 렌더링 오류의 원인이 되는 템플릿 변수에 대한 정보가 포함되어 있습니다.

예를 들어, 이 템플릿은 변수 namefavoritecolor를 포함합니다.

{
  "Template": {
    "TemplateName": "ExampleTemplate",
    "SubjectPart": "Hello, {{name}}!",
    "HtmlPart": "<h1>Hello {{name}},</h1><p>Your favorite color is {{favoritecolor}}.</p>",
    "TextPart": "Dear {{name}},\r\nYour favorite color is {{favoritecolor}}."
  }
}

다음 템플릿 데이터를 전송하는 경우 Amazon SES는 이메일을 전송할 수 없습니다. 템플릿의 favoritecolor 변수가 누락되었기 때문입니다.

중요: 템플릿에 존재하지 않는 추가 변수(예: favoritenumber)가 포함된 경우에는 오류가 발생하지 않습니다. 하지만 템플릿에 포함된 모든 변수는 템플릿 데이터에서 대소문자를 정확히 구분해야 합니다.

"TemplateData": "{ \"name\":\"Jane\", \"favoritenumber\": \"10\" }"

렌더링 오류 이벤트 알림을 사용하면 다음과 비슷한 오류 알림을 수신합니다.

{
    "eventType": "Rendering Failure",
    "mail": {
        "timestamp": "2019-09-09T04:38:19.788Z",
        "source": "sender@example.com",
        "sourceArn": "arn:aws:ses:us-west-2:1234567890123:identity/sender@example.com",
        "sendingAccountId": "1234567890123",
        "messageId": "01010161a734a0eb-a706827a-3bda-490f-8eaa-63cf4b00d10c-000000",
        "destination": [
            "receiver@example.com"
        ],
        "headersTruncated": false,
        "tags": {
            "ses:configuration-set": [
                "RenderFailure"
            ]
        }
    },
    "failure": {
        "errorMessage": "Attribute 'favoritecolor' is not present in the rendering data.",
        "templateName": "ExampleTemplate"
    }
}

다음 지침에 따라 렌더링 오류를 방지합니다.

  • 템플릿 데이터에서 변수 이름의 대소문자를 확인합니다. 템플릿의 변수 이름은 대소문자를 구분합니다.
  • 템플릿 데이터가 템플릿의 모든 변수를 포함하는지 확인합니다.

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?