

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Bekerja dengan lampiran email di SES
<a name="attachments"></a>

Lampiran email di SES adalah file yang dapat Anda sertakan dengan pesan email Anda saat menggunakan SES API v2 `SendEmail` dan `SendBulkEmail` operasi. Fitur ini memungkinkan Anda untuk memperkaya konten email Anda dengan menyertakan dokumen seperti PDFs, file Word, gambar, atau jenis file lain yang sesuai dengan jenis MIME yang didukung SES. Anda juga dapat menyertakan gambar sebaris yang dirender langsung di konten email tanpa mengharuskan penerima untuk mengunduhnya secara terpisah. Anda dapat menyertakan beberapa lampiran per email, hingga batas ukuran pesan total 40MB.

**catatan**  
[https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html)SES API v2 dengan tipe `Raw` konten, antarmuka SMTP, dan SES API v1 terus menangani lampiran melalui konstruksi pesan MIME [email mentah](send-email-raw.md#send-email-raw-mime).

## Cara kerja lampiran di SES
<a name="how-attachments-work"></a>

Ada dua jenis pengkodean yang terjadi pada tahap yang berbeda saat mengirim email dengan lampiran:

Tahap 1 - Mengirim data ke SES:
+ Ketika Anda ingin mengirim lampiran ke SES, data biner (seperti PDF atau gambar) perlu diubah menjadi format yang dapat ditransmisikan dengan aman.
+ Di sinilah base64-encoding masuk — ini diperlukan karena Anda tidak dapat mengirim data biner mentah dalam permintaan JSON.
+ Jika Anda menggunakan AWS SDK, SDK menangani pengkodean ini secara otomatis.
+ Jika Anda menggunakan AWS CLI, Anda perlu mengkodekan lampiran base64-sendiri sebelum mengirimnya.

Tahap 2 - SES membuat email:
+ Setelah SES menerima data Anda, perlu membuat email yang sebenarnya dengan lampiran.
+ Di sinilah [ContentTransferEncoding](#attachment-structure)pengaturan ikut bermain.
+ SES akan menggunakan metode pengkodean apa pun yang Anda tentukan ContentTransferEncoding untuk secara otomatis memformat lampiran di email akhir.

Anggap saja seperti ini — ini mirip dengan mengirim paket melalui surat. Pertama, Anda perlu membawa paket ke kantor pos (Tahap 1 - Base64-encoding diperlukan), maka kantor pos akan mengemasnya dengan tepat untuk pengiriman akhir (Tahap 2 -). ContentTransferEncoding

## Struktur objek lampiran
<a name="attachment-structure"></a>

Saat Anda mengirim email dengan lampiran melalui SES, layanan menangani konstruksi pesan MIME yang kompleks secara otomatis. Anda hanya perlu menyediakan konten lampiran dan metadata melalui struktur [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Attachment.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_Attachment.html)objek SES API v2 berikut:
+ `FileName`(Wajib) - Nama file yang ditampilkan kepada penerima (harus menyertakan ekstensi file). Jika tidak disediakan, SES akan memperoleh a `ContentType` dari perpanjangan. `FileName`
+ `ContentType`(Opsional) - Pengidentifikasi jenis [media yang sesuai dengan IANA](https://www.iana.org/assignments/media-types/media-types.xhtml).
+ `ContentDisposition`(Opsional) - Menentukan bagaimana lampiran harus diberikan: `ATTACHMENT` *(default)* atau. `INLINE`
+ `ContentDescription`(Opsional) — Deskripsi singkat tentang konten.
+ `RawContent`(Wajib) — Isi lampiran yang sebenarnya.
+ `ContentTransferEncoding`(Opsional) - Menentukan bagaimana muatan lampiran dikodekan ketika itu dirakit ke dalam pesan pantomim email: `SEVEN_BIT` *(*default), atau. `BASE64` `QUOTED_PRINTABLE`

Semua konten terlampir harus dikodekan ke base64 sebelum mentransfer ke titik akhir SES untuk dikirim. Jika Anda menggunakan klien AWS SDK untuk melakukan panggilan API, ini akan ditangani secara otomatis untuk Anda. Jika Anda menggunakan AWS CLI, atau telah menerapkan klien Anda sendiri, Anda harus melakukan pengkodean sendiri, seperti:
+ Konten teks biasa: `Text attachment sample content.`
+ Base64 dikodekan: `VGV4dCBhdHRhY2htZW50IHNhbXBsZSBjb250ZW50Lg==`

Contoh berikut menunjukkan cara menggunakan struktur objek lampiran saat menentukan lampiran dengan SES API v2 [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html)dan [https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendBulkEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendBulkEmail.html)operasi menggunakan AWS CLI referensi file JSON yang berisi elemen objek lampiran.

**Example — SendEmail dengan konten sederhana**  

```
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"
                }
            ]
        }
    }
}
```

**Example — SendEmail dengan konten sederhana dan lampiran inline**  

```
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",
                    "ContentTransferEncoding": "BASE64"
                }
            ]
        }
    }
}
```

**Example - SendEmail dengan konten template**  

```
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"
                }
            ]
        }
    }
}
```

**Example — SendBulkEmail dengan konten lampiran**  

```
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\"}"
                }
            }
        }
    ]
}
```

## Praktik terbaik
<a name="attachments-best-practices"></a>
+ Pertahankan ukuran pesan total (termasuk lampiran) di bawah 40MB.
+ Biarkan SES mendeteksi jenis konten secara otomatis berdasarkan ekstensi file bila memungkinkan.
+ Secara eksplisit menentukan jenis konten hanya ketika mereka berada di luar tipe [MIME umum](https://developer.mozilla.org/en-US/docs/Web/HTTP/MIME_types/Common_types).
+ Pertimbangkan untuk menggunakan gambar sebaris untuk rendering email yang lebih baik.
+ SES mendukung berbagai jenis MIME untuk lampiran, kecuali yang tercantum dalam. [Tipe lampiran yang tidak didukung](#mime-types)

## Jenis lampiran SES yang tidak didukung
<a name="mime-types"></a>

Anda dapat mengirim pesan dengan lampiran melalui Amazon SES dengan menggunakan standar Multipurpose Internet Mail Extensions (MIME). Amazon SES menerima semua jenis lampiran file *kecuali* untuk lampiran dengan ekstensi file dalam daftar berikut.


|  |  |  |  |  | 
| --- |--- |--- |--- |--- |
| .ade<br />.adp<br />.app<br />.asp<br />.bas<br />.bat<br />.cer<br />.chm<br />.cmd<br />.com<br />.cpl<br />.crt<br />.csh<br />.der<br />.exe<br />.fxp<br />.gadget<br />.hlp | .hta<br />.inf<br />.ins<br />.isp<br />.its<br />.js<br />.jse<br />.ksh<br />.lib<br />.lnk<br />.mad<br />.maf<br />.mag<br />.mam<br />.maq<br />.mar<br />.mas<br />.mat | .mau<br />.mav<br />.maw<br />.mda<br />.mdb<br />.mde<br />.mdt<br />.mdw<br />.mdz<br />.msc<br />.msh<br />.msh1<br />.msh2<br />.mshxml<br />.msh1xml<br />.msh2xml<br />.msi<br />.msp | .mst<br />.ops<br />.pcd<br />.pif<br />.plg<br />.prf<br />.prg<br />.reg<br />.scf<br />.scr<br />.sct<br />.shb<br />.shs<br />.sys<br />.ps1<br />.ps1xml<br />.ps2<br />.ps2xml | .psc1<br />.psc2<br />.tmp<br />.url<br />.vb<br />.vbe<br />.vbs<br />.vps<br />.vsmacros<br />.vss<br />.vst<br />.vsw<br />.vxd<br />.ws<br />.wsc<br />.wsf<br />.wsh<br />.xnk | 

Beberapa ISPs memiliki batasan lebih lanjut (seperti pembatasan terkait lampiran yang diarsipkan), jadi kami sarankan untuk menguji pengiriman email Anda melalui major ISPs sebelum Anda mengirim email produksi Anda.