Kirim email dengan PHPMailer - sematkan gambar di badan

97

Saya mencoba mengirim email HTML, dengan PHPMailer, dengan gambar. Badan dimuat dari file html, yang berisi semua info.

Saat mengirim surat, gambar tidak muncul di badan, meskipun saya bahkan mengirim gambar juga sebagai lampiran.

<img>Tag HTML menunjuk ke tempat yang sama dengan tempat tersebut.

PHP:

$mail->AddAttachment('img/2u_cs_mini.jpg');

Bagaimana cara membuat html mengarah ke lampiran sehingga gambar dapat dimuat di badan.

Melihat contoh yang disertakan dengan PHPMailer, saya tidak melihat perbedaan apa pun, dan dalam kasus mereka gambar tersebut muncul.

elvispt
sumber

Jawaban:

206

Saya menemukan jawabannya:

$mail->AddEmbeddedImage('img/2u_cs_mini.jpg', 'logo_2u');

dan di <img>tag putsrc='cid:logo_2u'

elvispt
sumber
3
Itu sangat membantu !!! Ingin tahu di mana Anda menemukan ini? Tolong jelaskan.
mtk
Mengapa garis miring terbalik di akhir cid?
Plummer
Saya melakukan ini sangat lama, saya tidak ingat apakah ada alasannya. Saya rasa tidak ada. Hanya beberapa sampah, kemungkinan besar.
elvispt
8
Saya yakin garis miring terbalik secara keliru ditinggalkan di sana dari kode sebelumnya yang lolos dari tanda kutip, seperti echo "src=\"cid:logo_2u\""dan saya tidak percaya garis miring terbalik diperlukan.
Kejam
8
Untuk yang membutuhkan penjelasan dari non expert: perlu memberitahu mesin rendering dari mana mendapatkan image dan dengan protokol apa (untuk menggunakan image yang dilampirkan gunakan protokol de cid ", Content-ID). Dan anda menggunakan AddEmbeddedImage untuk memberikan id ke lampiran sehingga Anda dapat merujuk padanya (Perhatikan bahwa ini dapat berupa suara dan jenis file lainnya).
PhoneixS
3

Menurut Manual PHPMailer , jawaban lengkapnya adalah:

$mail->AddEmbeddedImage(filename, cid, name);
//Example
$mail->AddEmbeddedImage('my-photo.jpg', 'my-photo', 'my-photo.jpg '); 

Kasus Penggunaan:

$mail->AddEmbeddedImage("rocks.png", "my-attach", "rocks.png");
$mail->Body = 'Embedded Image: <img alt="PHPMailer" src="cid:my-attach"> Here is an image!';

Jika Anda ingin menampilkan gambar dengan URL jarak jauh:

$mail->addStringAttachment(file_get_contents("url"), "filename");
Marie-Eva BB Volmar
sumber