Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengirim email mentah menggunakan Amazon SES API v2
Anda dapat menggunakan SendEmail
operasi Amazon SES API v2 dengan jenis konten yang ditentukan raw
untuk mengirim pesan yang disesuaikan ke penerima menggunakan format email mentah.
Tentang bidang header email
Simple Mail Transfer Protocol (SMTP) menentukan bagaimana pesan email akan dikirim dengan mendefinisikan amplop surat dan beberapa parameternya, tetapi tidak berkaitan dengan isi pesan. Sebaliknya, Internet Message Format (RFC5322
Dengan spesifikasi Format Pesan Internet, setiap pesan email terdiri dari header dan badan. Header terdiri dari metadata pesan, dan badan berisi pesan itu sendiri. Untuk informasi selengkapnya tentang header dan badan email, lihat Format email dan Amazon SES.
Menggunakan MIME
SMTPProtokol ini awalnya dirancang untuk mengirim pesan email yang hanya berisi ASCII karakter 7-bit. Spesifikasi ini membuat SMTP tidak cukup untuk pengkodean ASCII non-teks (seperti Unicode), konten biner, atau lampiran. Standar Multipurpose Internet Mail Extensions (MIME) dikembangkan untuk memungkinkan pengiriman banyak jenis konten lainnya menggunakanSMTP.
MIMEStandar bekerja dengan memecah badan pesan menjadi beberapa bagian dan kemudian menentukan apa yang harus dilakukan dengan setiap bagian. Misalnya, satu bagian dari badan pesan email mungkin berupa teks biasa, sementara yang lain mungkinHTML. Selain itu, MIME memungkinkan pesan email berisi satu atau lebih lampiran. Penerima pesan dapat melihat lampiran dari dalam klien email mereka, atau mereka dapat menyimpan lampiran.
Header dan konten pesan dipisahkan oleh baris kosong. Setiap bagian dari email dipisahkan oleh batas, string karakter yang menunjukkan awal dan akhir dari setiap bagian.
Pesan multipart dalam contoh berikut berisi teks dan HTML bagian, dan lampiran. Lampiran harus ditempatkan tepat di bawah header lampiran dan paling sering dikodekan base64
seperti yang ditunjukkan dalam contoh ini.
From: "Sender Name" <sender@example.com> To: recipient@example.com Subject: Customer service contact info Content-Type: multipart/mixed; boundary="a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a" --a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a Content-Type: multipart/alternative; boundary="sub_a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a" --sub_a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Please see the attached file for a list of customers to contact. --sub_a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable <html> <head></head> <body> <h1>Hello!</h1> <p>Please see the attached file for a list of customers to contact.</p> </body> </html> --sub_a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a-- --a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a Content-Type: text/plain; name="customers.txt" Content-Description: customers.txt Content-Disposition: attachment;filename="customers.txt"; creation-date="Sat, 05 Aug 2017 19:35:36 GMT"; Content-Transfer-Encoding: base64 SUQsRmlyc3ROYW1lLExhc3ROYW1lLENvdW50cnkKMzQ4LEpvaG4sU3RpbGVzLENhbmFkYQo5MjM4 OSxKaWUsTGl1LENoaW5hCjczNCxTaGlybGV5LFJvZHJpZ3VleixVbml0ZWQgU3RhdGVzCjI4OTMs QW5heWEsSXllbmdhcixJbmRpYQ== --a3f166a86b56ff6c37755292d690675717ea3cd9de81228ec2b76ed4a15d6d1a--
Tipe konten untuk pesan adalah multipart/mixed
, menunjukkan bahwa pesan memiliki banyak bagian (di contoh ini, badan dan lampiran), dan klien penerima harus menangani setiap bagian secara terpisah.
Nest yang dilakukan dalam bagian badan adalah bagian kedua yang menggunakan tipe konten multipart/alternative
. Jenis konten ini menunjukkan bahwa setiap bagian berisi versi alternatif dari konten yang sama (dalam hal ini, versi teks dan HTML versi). Jika klien email penerima dapat menampilkan HTML konten, maka itu menunjukkan HTML versi badan pesan. Jika klien email penerima tidak dapat menampilkan HTML konten, maka itu akan menampilkan versi teks biasa dari badan pesan.
Kedua versi pesan juga berisi lampiran (di kasus ini, file teks pendek yang berisi beberapa nama pelanggan).
Ketika Anda menyarangkan MIME bagian dalam bagian lain, seperti dalam contoh ini, bagian bersarang harus menggunakan boundary
parameter yang berbeda dari boundary
parameter di bagian induk. Batas-batas ini harus berupa string unik karakter. Untuk menentukan batas antar MIME bagian, ketik dua tanda hubung (--) diikuti oleh string batas. Di akhir MIME bagian, tempatkan dua tanda hubung di awal dan akhir string batas.
catatan
Sebuah pesan tidak dapat memiliki lebih dari 500 MIME bagian.
MIMEPengkodean
Untuk menjaga kompatibilitas dengan sistem yang lebih lama, Amazon SES menghormati ASCII batasan 7-bit SMTP seperti yang didefinisikan dalam RFC 2821.
Alamat email
String alamat email harus 7-bitASCII. Jika Anda ingin mengirim ke atau dari alamat email yang berisi karakter Unicode di bagian domain alamat, Anda harus mengodekan domain menggunakan Punycode. Punycode tidak diizinkan di bagian lokal dari alamat email (bagian sebelum tanda @) atau dalam nama "friendly from". Jika Anda ingin menggunakan karakter Unicode dalam nama “friendly from”, Anda harus menyandikan nama “friendly from” menggunakan sintaks MIME encoded-word, seperti yang dijelaskan dalam. Mengirim email mentah menggunakan Amazon SES API v2 Untuk informasi lebih lanjut tentang Punycode, lihat RFC3492
catatan
Aturan ini hanya berlaku untuk alamat email yang Anda tentukan di envelope pesan, bukan header pesan. Saat Anda menggunakan SendEmail
operasi Amazon SES API v2, alamat yang Anda tentukan dalam Destinations
parameter Source
dan menentukan pengirim dan penerima amplop, masing-masing.
Header email
Untuk menyandikan header pesan, gunakan sintaks kata yang MIME dikodekan. MIMEsintaks kata yang dikodekan menggunakan format berikut:
=?
charset
?encoding
?encoded-text
?=
Nilai
dapat berupa encoding
Q
atau B
. Jika nilai pengodean adalah Q
, maka nilai
harus menggunakan Q-encoding. Jika nilai pengodean adalah encoded-text
B
, maka nilai
harus menggunakan pengodean base64.encoded-text
Misalnya, jika Anda ingin menggunakan string "Як ти поживаєш?" di baris subjek email, Anda dapat menggunakan salah satu pengodean berikut:
-
Pengkodean Q
=?utf-8?Q?=D0=AF=D0=BA_=D1=82=D0=B8_=D0=BF=D0=BE=D0=B6=D0=B8=D0=B2=D0=B0=D1=94=D1=88=3F?=
-
Pengkodean Base64
=?utf-8?B?0K/QuiDRgtC4INC/0L7QttC40LLQsNGU0Yg/?=
Untuk informasi lebih lanjut tentang Q-encoding, lihat 2047. RFC
Badan pesan
Untuk mengodekan badan pesan, Anda dapat menggunakan pengodean quoted-printable atau pengodean base64. Kemudian, gunakan header Content-Transfer-Encoding
untuk menunjukkan skema pengodean yang Anda gunakan.
Sebagai contoh, asumsikan badan pesan Anda berisi teks berikut:
१९७२ मे रे टॉमलिंसन ने पहला ई-मेल संदेश भेजा | रे टॉमलिंसन ने ही सर्वप्रथम @ चिन्ह का चयन किया और इन्ही को ईमेल का आविष्कारक माना जाता है
Jika Anda memilih untuk mengodekan teks ini menggunakan pengodean base64, pertama tentukan header berikut:
Content-Transfer-Encoding: base64
Kemudian, di bagian badan email, sertakan teks yang dikodekan base64:
4KWn4KWv4KWt4KWoIOCkruClhyDgpLDgpYcg4KSf4KWJ4KSu4KSy4KS/4KSC4KS44KSoIOCkqOCl hyDgpKrgpLngpLLgpL4g4KSILeCkruClh+CksiDgpLjgpILgpKbgpYfgpLYg4KSt4KWH4KSc4KS+ IHwg4KSw4KWHIOCkn+ClieCkruCksuCkv+CkguCkuOCkqCDgpKjgpYcg4KS54KWAIOCkuOCksOCl jeCkteCkquCljeCksOCkpeCkriBAIOCkmuCkv+CkqOCljeCkuSDgpJXgpL4g4KSa4KSv4KSoIOCk leCkv+Ckr+CkviDgpJTgpLAg4KSH4KSo4KWN4KS54KWAIOCkleCliyDgpIjgpK7gpYfgpLIg4KSV 4KS+IOCkhuCkteCkv+Ckt+CljeCkleCkvuCksOCklSDgpK7gpL7gpKjgpL4g4KSc4KS+4KSk4KS+ IOCkueCliAo=
catatan
Dalam beberapa kasus, Anda dapat menggunakan 8bit Content-Transfer-Encoding
dalam pesan yang Anda kirim menggunakan AmazonSES. Namun, jika Amazon SES harus membuat perubahan apa pun pada pesan Anda (misalnya, saat Anda menggunakan pelacakan terbuka dan klik), konten yang disandikan 8-bit mungkin tidak muncul dengan benar saat masuk ke kotak masuk penerima. Untuk alasan ini, Anda harus selalu menyandikan konten yang tidak ASCII 7-bit.
Lampiran file
Untuk melampirkan file ke email, Anda harus mengodekan lampiran menggunakan pengodean base64. Lampiran biasanya ditempatkan di bagian MIME pesan khusus, yang mencakup header berikut:
-
Content-Type - Jenis file lampiran. Berikut ini adalah contoh deklarasi MIME Content-Type umum:
-
File teks biasa -
Content-Type: text/plain; name="sample.txt"
-
Dokumen Microsoft Word —
Content-Type: application/msword; name="document.docx"
-
JPGgambar —
Content-Type: image/jpeg; name="photo.jpeg"
-
-
Content-Disposition - Menentukan bagaimana klien email penerima harus menangani konten. Untuk lampiran, nilai ini adalah
Content-Disposition: attachment
. -
Content-Transfer-Encoding — Skema yang digunakan untuk menyandikan lampiran. Untuk lampiran file, nilai ini hampir selalu
base64
. -
Lampiran yang dikodekan — Anda harus menyandikan lampiran yang sebenarnya dan memasukkannya ke dalam badan di bawah header lampiran seperti yang ditunjukkan pada contoh.
Amazon SES menerima jenis file yang paling umum. Untuk daftar jenis file yang SES tidak diterima Amazon, lihatJenis lampiran Amazon SES yang tidak didukung.
Mengirim email mentah menggunakan Amazon SES API v2
Amazon SES API v2 menyediakan SendEmail
tindakan, yang memungkinkan Anda menulis dan mengirim pesan email dalam format yang Anda tentukan saat Anda menyetel jenis konten menjadi sederhana, mentah, atau templat. Untuk deskripsi selengkapnya, lihat SendEmail
. Contoh berikut akan menentukan jenis konten raw
untuk mengirim pesan menggunakan format email mentah.
catatan
Untuk tips tentang cara meningkatkan kecepatan pengiriman email ketika Anda melakukan beberapa panggilan ke SendEmail
, lihat Meningkatkan throughput dengan Amazon SES.
Badan pesan harus berisi pesan yang diformat dengan benar dan email mentah, dengan bidang header dan pengodean badan pesan yang sesuai. Meskipun pesan mentah mungkin dapat disusun secara manual dalam aplikasi, tapi akan jauh lebih mudah untuk melakukannya dengan menggunakan pustaka surat yang ada.