

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 고급 이메일 맞춤 설정
<a name="send-personalized-email-advanced"></a>

 *저장된 템플릿*을 사용하는 경우, 즉 SES v2 API와 함께 `CreateEmailTemplate` 작업을 사용하여 Amazon SES에서 [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Template.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Template.html) 리소스를 생성한 경우, 핸들바 시스템을 활용하여 중첩 속성, 배열 반복, 기본 조건문, 인라인 부분 생성과 같은 고급 기능을 포함하는 템플릿을 생성할 수 있습니다. 이 섹션에서는 이러한 기능의 예를 제공합니다.

Handlebars에는 이 섹션에 설명되어 있는 기능 외의 추가 기능이 포함됩니다. 자세한 내용은 [handlebarsjs.com](http://handlebarsjs.com)에서 [Built-In Helpers](https://handlebarsjs.com/guide/builtin-helpers.html)를 참조하세요.

**참고**  
SES는 메시지의 HTML 템플릿을 렌더링할 때 HTML 콘텐츠를 이스케이프하지 않습니다. 즉, 연락처 양식과 같이 사용자 입력 데이터를 포함하는 경우 클라이언트 측에서 이스케이프해야 합니다.

**Topics**
+ [중첩 속성 분석](#send-personalized-email-advanced-nested)
+ [목록 살펴보기](#send-personalized-email-advanced-iterating)
+ [기본 조건문 사용](#send-personalized-email-advanced-conditionals)
+ [인라인 부분 생성](#send-personalized-email-advanced-inline-partials)

## 중첩 속성 분석
<a name="send-personalized-email-advanced-nested"></a>

Handlebars에는 복잡한 고객 데이터를 쉽게 구성할 수 있는 중첩 경로 지원이 포함되고 이메일 템플릿의 그 데이터를 참조합니다.

예를 들어 수신자 데이터를 여러 일반 범주로 조직할 수 있습니다. 각 범주 내에 세부 정보를 포함할 수 있습니다. 다음 코드 예에는 단일 수신자에 대한 이 구조의 예가 나옵니다.

```
{
  "meta":{
    "userId":"51806220607"
  },
  "contact":{
    "firstName":"Anaya",
    "lastName":"Iyengar",
    "city":"Bengaluru",
    "country":"India",
    "postalCode":"560052"
  },
  "subscription":[
    {
      "interest":"Sports"
    },
    {
      "interest":"Travel"
    },
    {
      "interest":"Cooking"
    }
  ]
}
```

이메일 템플릿에서 상위 속성의 이름 뒤에 마침표(.)와 값을 포함할 속성의 이름을 제공하여 중첩 속성을 참조할 수 있습니다. 예를 들어 앞의 예에 표시된 데이터 구조를 사용하고 이메일 템플릿에 각 수신자의 이름을 포함하려는 경우 이메일 템플릿에 `Hello {{contact.firstName}}!` 텍스트를 포함합니다.

Handlebars는 여러 수준 깊이로 중첩된 경로를 구문 분석할 수 있기 때문에 유연하게 템플릿 데이터를 구성할 수 있습니다.

## 목록 살펴보기
<a name="send-personalized-email-advanced-iterating"></a>

`each` 보조 도구 함수는 어레이로 항목을 살펴봅니다. 다음 코드는 `each` 헬퍼 함수를 사용하여 항목화된 각 수신자의 관심사 목록을 생성하는 이메일 템플릿의 예입니다.

```
{
  "Template": {
    "TemplateName": "Preferences",
    "SubjectPart": "Subscription Preferences for {{contact.firstName}} {{contact.lastName}}",
    "HtmlPart": "<h1>Your Preferences</h1>
                 <p>You have indicated that you are interested in receiving 
                   information about the following subjects:</p>
                 <ul>
                   {{#each subscription}}
                     <li>{{interest}}</li>
                   {{/each}}
                 </ul>
                 <p>You can change these settings at any time by visiting 
                    the <a href=https://www.example.com/prefererences/i.aspx?id={{meta.userId}}>
                    Preference Center</a>.</p>",
    "TextPart": "Your Preferences\n\nYou have indicated that you are interested in 
                 receiving information about the following subjects:\n
                 {{#each subscription}}
                   - {{interest}}\n
                 {{/each}}
                 \nYou can change these settings at any time by 
                 visiting the Preference Center at 
                 https://www.example.com/prefererences/i.aspx?id={{meta.userId}}"
  }
}
```

**중요**  
앞의 코드 예에는 예를 이해하기 쉽도록 `HtmlPart` 및 `TextPart` 속성의 값에 줄 바꿈이 포함되어 있습니다. 템플릿의 JSON 파일에는 이러한 값 내에 줄바꿈이 포함될 수 없습니다. 이 예를 복사하여 자체 JSON 파일에 붙여 넣으면 진행하기 전에 `HtmlPart` 및 `TextPart` 섹션에서 줄 바꿈 및 추가 공백을 제거합니다.

템플릿을 생성한 후 `SendEmail` 또는 `SendBulkEmail` 작업을 사용하여 수신자에게 이 템플릿으로 이메일을 보낼 수 있습니다. 각 수신자가 `Interests` 객체에 최소 하나의 값이 있는 한 항목화된 관심사 목록이 포함되는 이메일을 수신합니다. 다음 예는 앞의 템플릿을 사용하여 여러 수신자에게 이메일을 보내는 데 사용할 수 있는 JSON 템플릿을 보여 줍니다.

```
{
  "Source":"Sender Name <sender@example.com>",
  "Template":"Preferences",
  "Destinations":[
    {
      "Destination":{
        "ToAddresses":[
          "anaya.iyengar@example.com"
        ]
      },
      "ReplacementTemplateData":"{\"meta\":{\"userId\":\"51806220607\"},\"contact\":{\"firstName\":\"Anaya\",\"lastName\":\"Iyengar\"},\"subscription\":[{\"interest\":\"Sports\"},{\"interest\":\"Travel\"},{\"interest\":\"Cooking\"}]}"
      },
    {
      "Destination":{ 
        "ToAddresses":[
          "shirley.rodriguez@example.com"
        ]
      },
      "ReplacementTemplateData":"{\"meta\":{\"userId\":\"1981624758263\"},\"contact\":{\"firstName\":\"Shirley\",\"lastName\":\"Rodriguez\"},\"subscription\":[{\"interest\":\"Technology\"},{\"interest\":\"Politics\"}]}"
    }
  ],
  "DefaultTemplateData":"{\"meta\":{\"userId\":\"\"},\"contact\":{\"firstName\":\"Friend\",\"lastName\":\"\"},\"subscription\":[]}"
}
```

`SendBulkEmail` 작업을 사용하여 앞의 예에 나열된 수신자에게 이메일을 보내면 다음 이미지에 표시된 예와 같은 메시지를 수신합니다.

![스포츠, 여행 및 쿠킹을 선택한 관심사로 나열하는 기본 설정 알림입니다.](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/images/send-personalized-email-advanced-condition-interest.png)


## 기본 조건문 사용
<a name="send-personalized-email-advanced-conditionals"></a>

이 섹션은 이전 섹션에서 설명한 예를 기반으로 합니다. 이전 섹션의 예는 `each` 보조 도구를 사용하여 관심사 목록을 살펴봅니다. 하지만 관심사가 지정되지 않은 수신자는 빈 목록이 포함된 이메일을 수신합니다. `{{if}}` 보조 도구를 사용하면 특정 속성이 템플릿 데이터에 있는 경우 이메일의 형식을 다르게 할 수 있습니다. 다음 코드는 `Subscription` 어레이에 값이 포함되는 경우 `{{if}}` 보조 도구를 사용하여 앞 섹션의 글머리표 목록을 표시합니다. 어레이가 비어 있으면 다른 텍스트 블록이 표시됩니다.

```
{
  "Template": {
    "TemplateName": "Preferences2",
    "SubjectPart": "Subscription Preferences for {{contact.firstName}} {{contact.lastName}}",
    "HtmlPart": "<h1>Your Preferences</h1>
                 <p>Dear {{contact.firstName}},</p>
                 {{#if subscription}}
                   <p>You have indicated that you are interested in receiving 
                     information about the following subjects:</p>
                     <ul>
                     {{#each subscription}}
                       <li>{{interest}}</li>
                     {{/each}}
                     </ul>
                     <p>You can change these settings at any time by visiting 
                       the <a href=https://www.example.com/prefererences/i.aspx?id={{meta.userId}}>
                       Preference Center</a>.</p>
                 {{else}}
                   <p>Please update your subscription preferences by visiting 
                     the <a href=https://www.example.com/prefererences/i.aspx?id={{meta.userId}}>
                     Preference Center</a>.
                 {{/if}}",
    "TextPart": "Your Preferences\n\nDear {{contact.firstName}},\n\n
                 {{#if subscription}}
                   You have indicated that you are interested in receiving 
                   information about the following subjects:\n
                   {{#each subscription}}
                     - {{interest}}\n
                   {{/each}}
                   \nYou can change these settings at any time by visiting the 
                   Preference Center at https://www.example.com/prefererences/i.aspx?id={{meta.userId}}.
                 {{else}}
                   Please update your subscription preferences by visiting the 
                   Preference Center at https://www.example.com/prefererences/i.aspx?id={{meta.userId}}.
                 {{/if}}"
  }
}
```

**중요**  
앞의 코드 예에는 예를 이해하기 쉽도록 `HtmlPart` 및 `TextPart` 속성의 값에 줄 바꿈이 포함되어 있습니다. 템플릿의 JSON 파일에는 이러한 값 내에 줄바꿈이 포함될 수 없습니다. 이 예를 복사하여 자체 JSON 파일에 붙여 넣으면 진행하기 전에 `HtmlPart` 및 `TextPart` 섹션에서 줄 바꿈 및 추가 공백을 제거합니다.

다음 예는 앞의 템플릿을 사용하여 여러 수신자에게 이메일을 보내는 데 사용할 수 있는 JSON 템플릿을 보여 줍니다.

```
{
  "Source":"Sender Name <sender@example.com>",
  "Template":"Preferences2",
  "Destinations":[
    {
      "Destination":{
        "ToAddresses":[
          "anaya.iyengar@example.com"
        ]
      },
      "ReplacementTemplateData":"{\"meta\":{\"userId\":\"51806220607\"},\"contact\":{\"firstName\":\"Anaya\",\"lastName\":\"Iyengar\"},\"subscription\":[{\"interest\":\"Sports\"},{\"interest\":\"Cooking\"}]}"
      },
    {
      "Destination":{ 
        "ToAddresses":[
          "shirley.rodriguez@example.com"
        ]
      },
      "ReplacementTemplateData":"{\"meta\":{\"userId\":\"1981624758263\"},\"contact\":{\"firstName\":\"Shirley\",\"lastName\":\"Rodriguez\"}}"
    }
  ],
  "DefaultTemplateData":"{\"meta\":{\"userId\":\"\"},\"contact\":{\"firstName\":\"Friend\",\"lastName\":\"\"},\"subscription\":[]}"
}
```

이 예에서는 템플릿 데이터에 관심사 목록이 포함된 수신자가 이전 섹션에 표시된 예와 같은 이메일을 수신합니다. 하지만 템플릿 데이터에 관심사가 포함되지 않은 수신자는 다음 이미지에 표시된 예와 같은 이메일을 수신합니다.

!["사용자 기본 설정" 헤더와 구독 기본 설정 업데이트에 대한 텍스트가 포함된 이메일 메시지입니다.](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/images/send-personalized-email-advanced-condition-nointerest.png)


## 인라인 부분 생성
<a name="send-personalized-email-advanced-inline-partials"></a>

인라인 부분을 사용하여 반복된 문자열이 포함된 템플릿을 간소화할 수 있습니다. 예를 들어 사용 가능한 경우 템플릿의 첫 부분에 다음 코드를 추가하여 수신자의 이름 및 사용 가능한 경우 성이 포함된 인라인 부분을 만들 수 있습니다.

```
{{#* inline \"fullName\"}}{{firstName}}{{#if lastName}} {{lastName}}{{/if}}{{/inline}}\n
```

**참고**  
줄바꿈 문서(`\n`)는 템플릿의 콘텐츠에서 `{{inline}}` 블록을 분리하는 데 필요합니다. 줄바꿈은 최종 출력에 렌더링되지 않습니다.

`fullName` 부분을 생성한 후 `{{> fullName}}`의 예와 같이 부분의 이름 앞에 이상(>) 기호를 표시하고 공백을 표시하여 템플릿의 어느 부분에든 포함할 수 있습니다. 인라인 부분은 이메일 부분 사이에 전송되지 않습니다. 예를 들어 이메일의 HTML과 텍스트 버전 모두에 동일한 인라인 부분을 사용하려는 경우 `HtmlPart` 및 `TextPart` 섹션 모두에서 정의해야 합니다.

어레이를 통해 살펴보는 경우 인라인 부분을 사용할 수도 있습니다. 다음 코드를 사용하여 `fullName` 인라인 부분을 사용한 템플릿을 생성할 수 있습니다. 이 예에서는 인라인 부분이 수신자의 이름과 다른 이름의 어레이 모두에 적용됩니다.

```
{
  "Template": {
    "TemplateName": "Preferences3",
    "SubjectPart": "{{firstName}}'s Subscription Preferences",
    "HtmlPart": "{{#* inline \"fullName\"}}
                   {{firstName}}{{#if lastName}} {{lastName}}{{/if}}
                 {{/inline~}}\n
                 <h1>Hello {{> fullName}}!</h1>
                 <p>You have listed the following people as your friends:</p>
                 <ul>
                 {{#each friends}}
                   <li>{{> fullName}}</li>
                 {{/each}}</ul>",
    "TextPart": "{{#* inline \"fullName\"}}
                   {{firstName}}{{#if lastName}} {{lastName}}{{/if}}
                 {{/inline~}}\n
                 Hello {{> fullName}}! You have listed the following people 
                 as your friends:\n
                 {{#each friends}}
                   - {{> fullName}}\n
                 {{/each}}"
  }
}
```

**중요**  
앞의 코드 예에는 예를 이해하기 쉽도록 `HtmlPart` 및 `TextPart` 속성의 값에 줄 바꿈이 포함되어 있습니다. 템플릿의 JSON 파일에는 이러한 값 내에 줄바꿈이 포함될 수 없습니다. 이 예를 복사하여 자체 JSON 파일에 붙여 넣으면 진행하기 전에 이 섹션들에서 줄 바꿈 및 추가 공백을 제거합니다.