Ketika membuat pesan email Anda seharusnya mengatur Content-Type untuk multipart/alternative
saat mengirim HTML dan TEXT atau multipart/mixed
saat mengirim TEKS dan lampiran.
Jadi apa yang Anda lakukan jika Anda ingin mengirim HTML, Teks, dan lampiran? Gunakan keduanya?
email
smtp
content-type
mime
Xeoncross
sumber
sumber
Jawaban:
Saya menghadapi tantangan ini hari ini dan saya menemukan jawaban ini bermanfaat tetapi tidak cukup eksplisit untuk saya.
Sunting : Baru saja menemukan Email Apache Commons yang membungkus ini dengan baik, artinya Anda tidak perlu tahu di bawah ini.
Jika kebutuhan Anda adalah email dengan:
Satu-satunya struktur yang saya temukan yang berfungsi dengan Gmail / Outlook / iPad adalah:
Dan kodenya adalah:
Dan contoh menggunakannya dengan dari Gmail
sumber
"<" id-left "@" id-right ">"
.Gunakan
multipart/mixed
dengan bagian pertama sebagaimultipart/alternative
dan bagian selanjutnya untuk lampiran. Pada gilirannya, gunakantext/plain
dantext/html
bagian - bagian di dalammultipart/alternative
bagian itu.Klien email yang mampu kemudian harus mengenali
multipart/alternative
bagian itu dan menampilkan bagian teks atau bagian html seperlunya. Itu juga harus menunjukkan semua bagian berikutnya sebagai bagian lampiran.Hal penting yang perlu diperhatikan di sini adalah bahwa, dalam pesan MIME multi-bagian, sangat sah untuk memiliki bagian-bagian di dalam bagian-bagian. Secara teori, persarangan itu bisa meluas ke kedalaman apa pun. Klien email mana pun yang berkemampuan wajar harus mampu memproses semua bagian pesan secara rekursif .
sumber
multipart/alternative
dengan benar. Entri terakhir adalah bagian prioritas terbaik / tertinggi, jadi Anda mungkin ingin menempatkantext/html
bagian tersebut sebagai sub bagian terakhir. Per RFC1341 .multipart/related
, dan kapan menggunakannya?multipart/alternative
menunjukkan bahwa hanya satu bagian yang disertakan harus ditampilkan - misalnya satu bagiantext/plain
dan satu bagiantext/html
. Jadi klien email tidak boleh menampilkan kedua bagian tetapi hanya satu. yaitu Mereka tidak terkait.multipart/related
menunjukkan bahwa berbagai sub bagian, semuanya adalah bagian dari bagian root utama, misalnya bagian utama adalahtext/html
dan sub bagian adalah gambar yang disematkan. Lihat di sini untuk info lebih lanjut.mutt
klien CLI untuk memverifikasi bahwa Anda telah mengatur pesan MIME multi bagian dengan benar. Jika Anda menekanv
saat melihat pesan, pesan itu akan menampilkan dan memungkinkan traversal pohon bersarang bagian MIME.Pesan memiliki konten. Konten dapat berupa teks, html, DataHandler atau Multipart, dan hanya ada satu konten. Multiparts hanya memiliki BodyParts tetapi dapat memiliki lebih dari satu. BodyParts, seperti Pesan, dapat memiliki konten yang telah dijelaskan.
Pesan dengan HTML, teks, dan lampiran dapat dilihat secara hierarkis seperti ini:
Dan kode untuk membangun pesan seperti itu:
sumber
Saya menekan masalah ini. Arsitektur ini (dari jawaban Lain) bekerja untuk saya. Berikut ini solusinya dengan Python.
Inilah fungsi pembuatan email utama:
Ini adalah kode lengkap untuk mengirim email yang berisi html / teks / lampiran:
sumber
Berdasarkan contoh Iain, saya memiliki kebutuhan yang sama untuk menyusun email-email ini dengan plaintext, HTML, dan beberapa lampiran terpisah, tetapi menggunakan PHP. Karena kami menggunakan Amazon SES untuk mengirim email dengan lampiran, API saat ini mengharuskan Anda untuk membangun email dari awal menggunakan fungsi sendRawEmail (...).
Setelah banyak penyelidikan (dan lebih besar dari frustrasi normal), masalah diselesaikan dan kode sumber PHP diposting sehingga dapat membantu orang lain mengalami masalah yang sama. Semoga ini bisa membantu seseorang - pasukan monyet yang saya paksa untuk menangani masalah ini sekarang kelelahan.
Kode Sumber PHP untuk mengirim email dengan lampiran menggunakan Amazon SES.
sumber
$boundary
berisi seluruh tubuh dengan lampiran tetapi hanya$boundary2
berisi HTML atau teks biasa. Solusi ramah. Tolong beritahu saya, ini solusi Anda untuk mengirim teks biasa, apakah ini pesan alternatif jika klien email tidak mendukung HTML? Terima kasih!Jawaban Hebat Lain!
Ada beberapa hal yang saya lakukan untuk membuat ini bekerja di perangkat yang lebih luas. Pada akhirnya saya akan mendaftar klien yang saya uji.
Saya menambahkan konstruktor build baru yang tidak mengandung lampiran parameter dan tidak menggunakan MimeMultipart ("mixed"). Tidak perlu dicampur jika Anda hanya mengirim gambar sebaris.
Dalam metode addTextVersion saya menambahkan charset ketika menambahkan konten ini mungkin bisa / harus diteruskan, tapi saya hanya menambahkannya secara statis.
Item terakhir ditambahkan ke metode addImagesInline. Saya menambahkan pengaturan nama file gambar ke header dengan kode berikut. Jika Anda tidak melakukan ini maka setidaknya pada klien email default Android itu akan memiliki gambar sebaris yang memiliki nama Tidak Dikenal dan tidak akan secara otomatis mengunduhnya dan hadir dalam email.
Jadi akhirnya, ini adalah daftar klien yang saya uji. Outlook 2010, Outlook Web App, Internet Explorer 11, Firefox, Chrome, Outlook menggunakan aplikasi asli Apple, Email melalui Gmail - Browser mail client, Internet Explorer 11, Firefox, Chrome, Android mail default client, osx IPhone default mail client, Gmail klien email di Android, klien email Gmail di IPhone, Email masuk melalui Yahoo - Klien email browser, Internet Explorer 11, Firefox, Chrome, klien email default Android, klien email default osx IPhone.
Semoga itu bisa membantu orang lain.
sumber
Inilah yang terbaik: Pesan multi-pantul / campuran mime dengan lampiran dan gambar sebaris
Dan gambar: https://www.qcode.co.uk/images/mime-nesting-structure.png
Skema multipart / terkait / alternatif
sumber
Subtipe Campuran
Subtipe Alternatif
Sumber
sumber