ส่งอีเมลด้วย PHPMailer - ฝังรูปภาพในเนื้อหา


97

ฉันพยายามส่งเมล HTML ด้วย PHPMailer พร้อมรูปภาพ เนื้อหาถูกโหลดจากไฟล์ html ซึ่งมีข้อมูลทั้งหมด

เมื่อส่งจดหมายรูปภาพจะไม่ปรากฏในเนื้อความแม้ว่าฉันจะส่งภาพเป็นไฟล์แนบด้วยก็ตาม

HTML <img>แท็กชี้ไปที่เดียวกันกับสถานที่นั้น

PHP:

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

ฉันจะทำให้ html ชี้ไปที่ไฟล์แนบเพื่อให้สามารถโหลดรูปภาพในร่างกายได้อย่างไร

ดูตัวอย่างที่มาพร้อมกับ PHPMailer ฉันไม่สังเกตเห็นความแตกต่างใด ๆ และในกรณีนี้ภาพจะปรากฏขึ้น

คำตอบ:


208

ฉันพบคำตอบ:

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

และ<img>ใส่แท็กsrc='cid:logo_2u'


3
ที่ช่วยได้อย่างสมบูรณ์แบบ !!! ด้วยความอยากรู้คุณพบสิ่งนี้ที่ไหน? กรุณาอธิบาย.
mtk

ทำไมแบ็กสแลชที่ส่วนท้ายของ cid?
พลัมเมอ

ฉันทำสิ่งนี้มานานแล้วฉันจำไม่ได้ว่ามีเหตุผลหรือไม่ ฉันไม่คิดว่าจะมี ขยะเพียงบางส่วนมีแนวโน้มมากที่สุด
elvispt

8
ฉันเชื่อว่าแบ็กสแลชถูกทิ้งไว้ที่นั่นอย่างไม่ถูกต้องจากรหัสก่อนหน้านี้ที่หลีกเลี่ยงเครื่องหมายคำพูดเช่นecho "src=\"cid:logo_2u\""และฉันไม่เชื่อว่าจำเป็นต้องใช้แบ็กสแลช
โหดร้าย

9
สำหรับผู้ที่ต้องการคำอธิบายจากผู้ที่ไม่ใช่ผู้เชี่ยวชาญ: คุณต้องบอกเอ็นจินการเรนเดอร์ว่ารับภาพมาจากที่ใดและด้วยโปรโตคอลใด (ในการใช้รูปภาพที่แนบมาคุณใช้ de cid "โปรโตคอล Content-ID) และคุณใช้ AddEmbeddedImage เพื่อให้ id กับไฟล์แนบเพื่อให้คุณสามารถอ้างอิงได้ (โปรดทราบว่าอาจเป็นเสียงและไฟล์ประเภทอื่น ๆ )
PhoneixS

3

ตามคู่มือ PHPMailerคำตอบแบบเต็มจะเป็น:

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

ใช้กรณี:

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

หากคุณต้องการแสดงภาพด้วยรีโมต URL:

$mail->addStringAttachment(file_get_contents("url"), "filename");
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.