기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SES의 이메일 첨부 파일은 SES API v2 SendEmail
및 SendBulkEmail
작업을 사용할 때 이메일 메시지에 포함할 수 있는 파일입니다. 이 기능을 사용하면 PDFs, Word 파일, 이미지 또는 SES 지원 MIME 유형을 준수하는 기타 파일 유형과 같은 문서를 포함하여 이메일 콘텐츠를 보강할 수 있습니다. 수신자가 별도로 다운로드할 필요 없이 이메일 콘텐츠에 직접 렌더링되는 인라인 이미지를 포함할 수도 있습니다. 최대 40MB의 총 메시지 크기 한도까지 이메일당 여러 첨부 파일을 포함할 수 있습니다.
참고
SendEmail
Raw
콘텐츠 유형이 있는 SES API v2, SMTP 인터페이스 및 SES API v1은 원시 이메일 MIME 메시지 구성을 통해 첨부 파일을 계속 처리합니다.
SES에서 첨부 파일이 작동하는 방식
첨부 파일이 포함된 이메일을 보낼 때 서로 다른 단계에서 발생하는 두 가지 유형의 인코딩이 있습니다.
1단계 - SES로 데이터 전송:
-
SES에 첨부 파일을 보내려는 경우 이진 데이터(예: PDF 또는 이미지)를 안전하게 전송할 수 있는 형식으로 변환해야 합니다.
-
여기서 base64 인코딩이 사용됩니다. JSON 요청에서 원시 바이너리 데이터를 전송할 수 없기 때문에 필요합니다.
-
AWS SDK를 사용하는 경우이 인코딩을 자동으로 처리합니다.
-
를 사용하는 경우 첨부 파일을 보내기 전에 직접 base64 인코딩 AWS CLI해야 합니다.
2단계 - 이메일을 생성하는 SES:
-
SES가 데이터를 수신하면 첨부 파일이 포함된 실제 이메일을 생성해야 합니다.
-
여기에서 ContentTransferEncoding 설정이 실행됩니다.
-
SES는 ContentTransferEncoding에서 지정한 인코딩 방법을 사용하여 최종 이메일에서 첨부 파일의 형식을 자동으로 지정합니다.
이렇게 생각하세요. 메일을 통해 패키지를 보내는 것과 비슷합니다. 먼저 패키지를 우체국으로 가져와야 합니다(1단계 Base64-encoding 필요). 그러면 우체국에서 최종 배송에 적합하게 패키지를 제공합니다(2단계 - ContentTransferEncoding).
부착물 객체 구조
SES를 통해 첨부 파일이 포함된 이메일을 보내면 서비스가 복잡한 MIME 메시지 구성을 자동으로 처리합니다. 다음 SES API v2 Attachment
객체 구조를 통해 첨부 파일 콘텐츠와 메타데이터를 제공하면 됩니다.
-
FileName
(필수) - 수신자에게 표시되는 파일 이름입니다(파일 확장명을 포함해야 함). 제공되지 않으면 SES는의 확장ContentType
에서를 파생합니다FileName
. -
ContentType
(선택 사항) - IANA 호환 미디어 유형 식별자입니다. -
ContentDisposition
(선택 사항) - (ATTACHMENT
기본값) 또는와 같이 첨부 파일을 렌더링하는 방법을 지정합니다INLINE
. -
ContentDescription
(선택 사항) - 콘텐츠에 대한 간략한 설명입니다. -
RawContent
(필수) - 첨부 파일의 실제 콘텐츠입니다. -
ContentTransferEncoding
(선택 사항) - 콘텐츠의 인코딩 유형을SEVEN_BIT
(기본값)BASE64
또는 로 지정합니다QUOTED_PRINTABLE
.
연결된 모든 콘텐츠는 다음과 같이 base64로 인코딩되어야 합니다.
-
일반 텍스트 콘텐츠:
Text attachment sample content.
-
Base64 인코딩:
VGV4dCBhdHRhY2htZW50IHNhbXBsZSBjb250ZW50Lg==
다음 예제에서는 SES API v2로 첨부 파일을 지정할 때 첨부 파일 객체 구조를 사용하는 방법과 첨부 파일 객체 요소가 포함된 JSON 파일을 AWS CLI 참조하는 SendEmail
SendBulkEmail
작업을 보여줍니다.
예 - 간단한 콘텐츠가 포함된 SendEmail
aws sesv2 send-email --cli-input-json file://request-send-email-simple.json
request-send-email-simple.json
{
"FromEmailAddress": "sender@example.com",
"Destination": {
"ToAddresses": [
"recipient@example.com"
]
},
"Content": {
"Simple": {
"Subject": {
"Data": "Email with attachment"
},
"Body": {
"Text": {
"Data": "Please see attached document."
},
"Html": {
"Data": "Please see attached <b>document</b>."
}
},
"Attachments": [
{
"RawContent": "<base64-encoded-content>",
"ContentDisposition": "ATTACHMENT",
"FileName": "document.pdf",
"ContentDescription": "PDF Document Attachment",
"ContentTransferEncoding": "BASE64"
}
]
}
}
}
예 - 간단한 콘텐츠와 인라인 연결이 포함된 SendEmail
aws sesv2 send-email --cli-input-json file://request-send-email-simple-inline-attachment.json
request-send-email-simple-inline-attachment.json
{
"FromEmailAddress": "sender@example.com",
"Destination": {
"ToAddresses": [
"recipient@example.com"
]
},
"Content": {
"Simple": {
"Subject": {
"Data": "Email with attachment"
},
"Body": {
"Html": {
"Data": "<html><body>Our logo:<br><img src=\"cid:logo123\" alt=\"Company Logo\"></body></html>"
}
},
"Attachments": [
{
"RawContent": "<base64-encoded-content>",
"ContentDisposition": "INLINE",
"FileName": "logo.png",
"ContentId": "logo123"
}
]
}
}
}
예 - 템플릿 콘텐츠가 포함된 SendEmail
aws sesv2 send-email --cli-input-json file://request-send-email-template.json
request-send-email-template.json
{
"FromEmailAddress": "sender@example.com",
"Destination": {
"ToAddresses": [
"recipient@example.com"
]
},
"Content": {
"Template": {
"TemplateName": "MyTemplate",
"TemplateData": "{\"name\":\"John\"}",
"Attachments": [
{
"RawContent": "<base64-encoded-content>",
"ContentDisposition": "ATTACHMENT",
"FileName": "document.pdf",
"ContentDescription": "PDF Document Attachment",
"ContentTransferEncoding": "BASE64"
}
]
}
}
}
예 - 첨부 콘텐츠가 포함된 SendBulkEmail
aws sesv2 send-bulk-email --cli-input-json file://request-send-bulk-email.json
request-send-bulk-email.json
{
"FromEmailAddress": "sender@example.com",
"DefaultContent": {
"Template": {
"TemplateName": "MyTemplate",
"TemplateData": "{}",
"Attachments": [
{
"RawContent": "<base64-encoded-content>",
"ContentDisposition": "ATTACHMENT",
"FileName": "document.pdf",
"ContentDescription": "PDF Document Attachment",
"ContentTransferEncoding": "BASE64"
}
]
}
},
"BulkEmailEntries": [
{
"Destination": {
"ToAddresses": [
"recipient@example.com"
]
},
"ReplacementEmailContent": {
"ReplacementTemplate": {
"ReplacementTemplateData": "{\"name\":\"John\"}"
}
}
}
]
}
모범 사례
-
총 메시지 크기(첨부 파일 포함)를 40MB 미만으로 유지합니다.
-
가능한 경우 SES가 파일 확장명을 기반으로 콘텐츠 유형을 자동으로 감지하도록 합니다.
-
콘텐츠 유형이 일반적인 MIME 유형을 벗어나는 경우에만 콘텐츠 유형을
명시적으로 지정합니다. -
더 나은 이메일 렌더링을 위해 인라인 이미지를 사용하는 것이 좋습니다.
-
SES는에 나열된 유형을 제외하고 연결에 대해 다양한 MIME 유형을 지원합니다지원되지 않는 연결 형식.
지원되지 않는 SES 연결 유형
Multipurpose Internet Mail Extensions(MIME) 표준을 사용하여 Amazon SES를 통해 첨부 파일이 포함된 메시지를 전송할 수 있습니다. Amazon SES는 모든 첨부 파일 유형을 허용합니다(다음 목록의 확장명을 사용하는 첨부파일 제외).
.ade .adp .app .asp .bas .bat .cer .chm .cmd .com .cpl .crt .csh .der .exe .fxp .gadget .hlp |
.hta .inf .ins .isp .its .js .jse .ksh .lib .lnk .mad .maf .mag .mam .maq .mar .mas .mat |
.mau .mav .maw .mda .mdb .mde .mdt .mdw .mdz .msc .msh .msh1 .msh2 .mshxml .msh1xml .msh2xml .msi .msp |
.mst .ops .pcd .pif .plg .prf .prg .reg .scf .scr .sct .shb .shs .sys .ps1 .ps1xml .ps2 .ps2xml |
.psc1 .psc2 .tmp .url .vb .vbe .vbs .vps .vsmacros .vss .vst .vsw .vxd .ws .wsc .wsf .wsh .xnk |
일부 ISP는 제한 사항(예: 보관된 첨부 파일 관련 제한 사항)을 추가로 두고 있으므로 프로덕션 이메일을 보내기 전에 주요 ISP를 통해 이메일 전송을 테스트하는 것이 좋습니다.