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
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 PDF, file Word, gambar, atau jenis file lain yang sesuai dengan jenis MIME yang didukung SES. Anda juga dapat menyertakan gambar sebaris yang dirender langsung dalam konten email tanpa mengharuskan penerima untuk mengunduhnya secara terpisah. Anda dapat menyertakan beberapa lampiran per email, hingga batas ukuran pesan total 40MB.
catatan
Bagaimana lampiran bekerja di SES
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 — 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 itu sendiri sebelum mengirimnya.
Tahap 2 - SES membuat email:
-
Setelah SES menerima data Anda, perlu membuat email aktual dengan lampiran.
-
Di sinilah ContentTransferEncoding pengaturan berperan.
-
SES akan menggunakan metode pengkodean apa pun yang Anda tent ContentTransferEncoding ukan untuk secara otomatis memformat lampiran di email akhir.
Pikirkan seperti ini — ini mirip dengan mengirim paket melalui surat. Pertama, Anda perlu membawa paket ke kantor pos (Tahap 1 - Base64-encoding wajib), kemudian kantor pos akan mengemasnya dengan tepat untuk pengiriman akhir (Tahap 2 - ContentTransferEncoding).
Struktur objek lampiran
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 Attachment objek SES API v2 berikut:
-
FileName(Wajib) — Nama file yang ditampilkan kepada penerima (harus menyertakan ekstensi file). Jika tidak disediakan, SES akan memperoleh aContentTypedari perpanjanganFileName. -
ContentType(Opsional) — pen IANA-compliant gidentifikasi jenis media. -
ContentDisposition(Opsional) — Menentukan bagaimana lampiran harus dirender:ATTACHMENT(default) atauINLINE. -
ContentDescription(Opsional) - Deskripsi singkat konten. -
RawContent(Diperlukan) - Isi aktual dari lampiran. -
ContentTransferEncoding(Opsional) — Menentukan bagaimana payload lampiran dikodekan saat dirakit ke dalam pesan mime email:SEVEN_BIT(default),BASE64atau.QUOTED_PRINTABLE
Semua konten terlampir harus dikodekan ke base64 sebelum ditransfer ke titik akhir SES untuk dikirim. Jika Anda menggunakan klien AWS SDK untuk melakukan panggilan API, ini secara otomatis ditangani untuk Anda. Jika Anda menggunakan AWS CLI, atau telah mengimplementasikan 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 SendEmail dan SendBulkEmail operasi menggunakan AWS CLI referensi file JSON yang berisi elemen objek lampiran.
contoh— SendEmail dengan konten sederhana
aws sesv2 send-email --cli-input-json file://request-send-email-simple.json
permintaan-kirim 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" } ] } } }
contoh— SendEmail dengan konten sederhana dan lampiran sebaris
aws sesv2 send-email --cli-input-json file://request-send-email-simple-inline-attachment.json
permintaan-kirim email-sederhana-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" } ] } } }
contoh- SendEmail dengan konten template
aws sesv2 send-email --cli-input-json file://request-send-email-template.json
permintaan-kirim 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" } ] } } }
contoh— SendBulkEmail dengan konten lampiran
aws sesv2 send-bulk-email --cli-input-json file://request-send-bulk-email.json
permintaan-kirim massal-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
-
Pertahankan ukuran pesan total (termasuk lampiran) di bawah 40MB.
-
Biarkan SES mendeteksi secara otomatis jenis konten berdasarkan ekstensi file jika memungkinkan.
-
Secara eksplisit menentukan jenis konten hanya jika mereka berada di luar tipe MIME umum.
-
Pertimbangkan untuk menggunakan gambar sebaris untuk rendering email yang lebih baik.
-
SES mendukung berbagai jenis MIME untuk lampiran, kecuali yang tercantum diTipe lampiran yang tidak didukung.
Jenis lampiran SES yang tidak didukung
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 .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 |
Beberapa ISP memiliki batasan lebih lanjut (seperti pembatasan terkait lampiran yang diarsipkan), jadi kami sarankan untuk menguji pengiriman email Anda melalui ISP utama sebelum mengirim email produksi Anda.