E-Mail mit PHPMailer senden - Bild in Body einbetten

97

Ich versuche, mit PHPMailer HTML-Mail mit Bildern zu senden. Der Body wird aus einer HTML-Datei geladen, die alle Informationen enthält.

Beim Senden der Mail erscheint das Bild nicht im Textkörper, obwohl ich das Bild sogar als Anhang sende.

Das HTML- <img>Tag zeigt auf dieselbe Stelle wie die Stelle.

PHP:

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

Wie kann ich den HTML-Code auf den Anhang verweisen lassen, damit das Bild in den Textkörper geladen werden kann?

Wenn ich mir das Beispiel ansehe, das mit PHPMailer geliefert wird, bemerke ich keinen Unterschied, und in diesem Fall erscheint das Bild.

elvispt
quelle

Antworten:

206

Ich fand die Antwort:

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

und auf den <img>Tag setzensrc='cid:logo_2u'

elvispt
quelle
3
Das hilft perfekt !!! Wo hast du das aus Neugier gefunden? Bitte erkläre.
MTK
Warum der Backslash am Ende des CID?
Plummer
Ich habe das vor so langer Zeit gemacht, ich erinnere mich nicht, ob es überhaupt einen Grund gab. Ich glaube nicht. Höchstwahrscheinlich nur ein bisschen Müll.
Elvispt
8
Ich glaube, der Backslash wurde fälschlicherweise von einem früheren Code dort gelassen, der Anführungszeichen entgangen ist, echo "src=\"cid:logo_2u\""und ich glaube nicht, dass der Backslash notwendig ist.
Grausam
8
Für diejenigen, die eine Erklärung von einem Nicht-Experten benötigen: Sie müssen der Rendering-Engine mitteilen, woher und mit welchem ​​Protokoll das Bild abgerufen werden soll (um ein angehängtes Bild zu verwenden, verwenden Sie das de cid "-Protokoll, die Inhalts-ID). Und Sie verwenden AddEmbeddedImage, um dem Anhang eine ID zu geben, damit Sie darauf verweisen können (Beachten Sie, dass es sich um Sounds und andere Dateitypen handeln kann).
PhoneixS
3

Laut PHPMailer-Handbuch wäre die vollständige Antwort:

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

Anwendungsfall :

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

Wenn Sie ein Bild mit einer Remote-URL anzeigen möchten:

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