Saya mencoba mengirim email html multi bagian / terkait dengan gambar gif yang disematkan. Email ini dibuat menggunakan Oracle PL / SQL. Upaya saya gagal, dengan gambar muncul sebagai X merah (di Outlook 2007 dan yahoo mail)
Saya telah mengirim email html untuk beberapa waktu, tetapi persyaratan saya sekarang adalah menggunakan beberapa gambar gif di email. Saya dapat menyimpan ini di salah satu server web kami dan hanya menautkannya, tetapi banyak klien email pengguna tidak akan menampilkannya secara otomatis dan perlu mengubah pengaturan atau mengunduhnya secara manual untuk setiap email.
Jadi, pikiranku adalah menanamkan gambar itu. Pertanyaan saya adalah:
- Apa yang saya lakukan salah di sini?
- Apakah pendekatan embedding sudah benar?
- Adakah opsi lain jika saya perlu menggunakan lebih banyak gambar? Lampiran tidak akan berfungsi, karena gambar biasanya berupa logo dan ikon yang tidak masuk akal dari konteks pesan. Selain itu, beberapa elemen email adalah tautan ke sistem online, jadi membuat PDF statis dan melampirkan tidak akan berfungsi (menurut pengetahuan saya).
potongan:
MIME-Version: 1.0
To: me@gmail.com
BCC: me@yahoo.com
From: email@yahoo.com
Subject: Test
Reply-To: email@yahoo.com
Content-Type: multipart/related; boundary="a1b2c3d4e3f2g1"
--a1b2c3d4e3f2g1
content-type: text/html;
<html>
<head><title>My title</title></head>
<body>
<div style="font-size:11pt;font-family:Calibri;">
<p><IMG SRC="cid:my_logo" alt="Logo"></p>
... more html here ...
</div></body></html>
--a1b2c3d4e3f2g1
Content-Type: image/gif;
Content-ID:<my_logo>
Content-Transfer-Encoding: base64
Content-Disposition: inline
[base64 image data here]
--a1b2c3d4e3f2g1--
Terimakasih banyak.
BTW: Ya, saya telah memverifikasi bahwa data base64 benar, karena saya dapat menyematkan gambar di html itu sendiri (menggunakan penggunaan algo yang sama untuk membuat data header) dan melihat gambar di Firefox / IE.
Saya juga harus mencatat bahwa ini BUKAN untuk spam, email dikirim ke klien tertentu yang mengharapkannya setiap hari. Kontennya berdasarkan data, dan bukan iklan.
<img src="URL" />
berfungsi untuk saya, tetapi itu adalah gambar yang saya hosting di luar situs. Itu tidak berhasil untukmu?Jawaban:
Cobalah untuk memasukkannya secara langsung, dengan cara ini Anda dapat memasukkan banyak gambar di berbagai lokasi dalam email.
Dan untuk membuat posting ini berguna bagi orang lain untuk: Jika Anda tidak memiliki string data base64, buatlah dengan mudah di: http://www.motobit.com/util/base64-decoder-encoder.asp dari file gambar .
Kode sumber email terlihat seperti ini, tetapi saya benar-benar tidak dapat memberi tahu Anda untuk apa batas itu:
// EDIT: Oh, saya baru sadar jika Anda memasukkan potongan kode pertama dari posting saya untuk menulis email dengan thunderbird, thunderbird secara otomatis mengubah kode html agar terlihat hampir sama dengan kode kedua di posting saya.
sumber
Solusi lain adalah melampirkan gambar sebagai lampiran dan kemudian mereferensikan kode html menggunakan cid.
Kode HTML:
C # Kode:
sumber
Saya tidak menemukan jawaban apa pun di sini yang berguna, jadi saya memberikan solusi saya.
Masalahnya adalah Anda menggunakan
multipart/related
jenis konten yang tidak baik dalam kasus ini. Saya menggunakanmultipart/mixed
dan di dalamnyamultipart/alternative
(berfungsi pada sebagian besar klien).Struktur pesan harus sebagai berikut:
Maka itu akan berhasil
sumber
Jika tidak berhasil, Anda dapat mencoba salah satu alat berikut yang mengubah gambar ke tabel HTML (berhati-hatilah dengan ukuran gambar Anda):
sumber
Menggunakan Base64 untuk menyematkan gambar di html sangat mengagumkan. Meskipun demikian, harap perhatikan bahwa string base64 dapat membuat ukuran email Anda menjadi besar.
Karena itu,
1) Jika Anda memiliki banyak gambar, mengunggah gambar Anda ke server dan memuat gambar-gambar itu dari server dapat membuat ukuran email Anda lebih kecil. (Anda bisa mendapatkan banyak layanan gratis melalui Google)
2) Jika hanya ada beberapa gambar di email Anda, menggunakan string base64 jelas merupakan pilihan yang bagus.
Selain pilihan yang diberikan oleh jawaban yang ada, Anda juga dapat menggunakan perintah untuk menghasilkan string base64 di linux:
sumber
Saya tahu ini adalah posting lama, tetapi jawaban saat ini tidak membahas fakta bahwa pandangan dan banyak penyedia email lainnya tidak mendukung gambar inline atau gambar CID. Cara paling efektif untuk menempatkan gambar di email adalah dengan menghostingnya secara online dan menempatkan link ke gambar tersebut di email. Untuk daftar email kecil, dropbox publik berfungsi dengan baik. Ini juga mengurangi ukuran email.
sumber
Anda memerlukan 3 batas agar gambar sebaris sepenuhnya sesuai.
Semuanya masuk ke dalam
multipart/mixed
.Kemudian gunakan
multipart/related
untuk memuatmultipart/alternative
header lampiran Anda dan gambar Anda.Terakhir, sertakan lampiran Anda yang dapat diunduh di dalam batas terakhir
multipart/mixed
.sumber
Sebenarnya ada posting blog yang sangat bagus yang mencantumkan pro dan kontra dari tiga pendekatan berbeda untuk masalah ini oleh Martyn Davies. Anda dapat membacanya di https://sendgrid.com/blog/embedding-images-emails-facts/ .
Saya ingin menambahkan pendekatan keempat menggunakan gambar latar belakang CSS.
Menambahkan
ke badan email Anda dan kelas css seperti:
sumber
Bagi mereka yang tidak bisa mendapatkan salah satu dari solusi ini yang berfungsi: Kirim gambar sebaris dalam email Mengikuti langkah-langkah yang ditetapkan dalam solusi yang ditawarkan oleh @ T30 saya bisa menampilkan gambar sebaris saya tanpa diblokir oleh pandangan (metode sebelumnya diblokir) . Jika Anda menggunakan pertukaran seperti kami maka juga saat melakukan:
Anda harus meneruskannya ke host url layanan pertukaran Anda. Selain itu, mengikuti solusi ini akan memungkinkan Anda dengan mudah mengirim gambar yang disematkan.
sumber
Mungkin menarik bahwa Outlook dan Outlook Express dapat menghasilkan format email gambar multi bagian ini, jika Anda memasukkan file gambar menggunakan fungsi menu Sisipkan / Gambar.
Jelas jenis email harus diatur ke HTML (bukan teks biasa).
Metode lain (misalnya seret / lepas, atau pemanggilan baris perintah apa pun) menghasilkan gambar yang dikirim sebagai lampiran.
Jika Anda kemudian mengirim email seperti itu kepada diri Anda sendiri, Anda dapat melihat bagaimana formatnya! :)
FWIW, saya mencari windows mandiri yang dapat dieksekusi yang melakukan gambar inline dari mode baris perintah, tetapi tampaknya tidak ada. Ini adalah jalur yang telah ditempuh banyak orang ... Seseorang dapat melakukannya dengan mengatakan Outlook Express, dengan meneruskannya ke file .eml yang diformat dengan tepat.
sumber
Berikut ini adalah kode kerja dengan dua cara untuk mencapai ini:
sumber
Satu petunjuk tambahan untuk posting Pavel Perna yang sangat membantu saya (tidak dapat berkomentar dengan reputasi saya, itulah mengapa saya memposting ini sebagai jawaban): Di beberapa versi Microsoft Exchange, disposisi konten inline dihapus ( lihat posting ini oleh Microsoft ). Gambar tersebut bukan bagian dari email yang dilihat pengguna di Outlook. Sebagai solusinya, gunakan "Content-Disposition: attachment" sebagai gantinya. Outlook 2016 tidak akan menampilkan gambar sebagai lampiran yang digunakan dalam pesan email, meskipun gambar tersebut menggunakan "Content-Disposition: attachment".
sumber
Jika Anda menggunakan Outlook untuk mengirim gambar statis dengan hyperlink, cara mudah adalah menggunakan Word.
sumber