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

2분 분량
0

SendTemplatedEmail 작업을 사용하여 Amazon Simple Email Service(Amazon SES) 계정에서 메시지를 전송하려고 합니다. 하지만 Amazon SES가 일부 이메일을 전송하지 않습니다.

해결 방법

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

Amazon Simple Notification Service(Amazon SNS)를 사용하여 렌더링 실패 이벤트 알림을 설정합니다. 렌더링 실패 이벤트 알림을 검토하여 SendTemplatedEmail 작업을 사용할 때 Amazon SES에서 이메일을 전송하지 않는 이유를 알아봅니다.

렌더링 오류 이벤트 알림을 설정하면 템플릿 기반 이메일 전송에 실패한 경우 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"
    }
}

렌더링 오류를 방지하려면 다음 지침을 따르세요.

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

관련 정보

템플릿을 사용하여 Amazon SES API로 맟춤형 이메일 전송

AWS 공식
AWS 공식업데이트됨 일 년 전