gerber
Goto Top

HTML - Bilder aus Anhang im Body einbetten

Hallo zusammen,

ich habe eine Frage zu eingebetteten Bilder in HTML.
Über PHP sende ich mit "sendMailMessage" Mails raus und hänge darüber auch Attachments an.

z.B.:

$attachments =
             
 array (

       'external_data/svb.png',  
       'external_data/my1.png'  
      
 );

Soweit so gut. Die Mails kommen sauber mit den Anhängen an.

Den Inhalt der Mail gestalte ich über HTML.
Jetzt würde ich gerne in der HTML Datei, bzw. in dem Mail Body die Anhänge einbetten, so dass diese nicht aus dem Internet abgerufen werden.

Leider bekomme ich dies nicht zum laufen.

<img width=100 height=100 id="1" src="cid:my1.png">  

Benutze ich solch ein Code, wird mir immer "wird geladen" angezeigt, aber das Bild wird nicht wirklich angezeigt.


Kann mir hierbei jemand einen Tipp geben, woran dies liegen könnte oder was ich falsch mache?

Danke im Voraus.

Grüße
Phil

Content-Key: 1296618662

Url: https://administrator.de/contentid/1296618662

Printed on: April 19, 2024 at 20:04 o'clock

Member: godlie
godlie Sep 23, 2021 updated at 13:29:48 (UTC)
Goto Top
Hallo,

ich würde an deiner stelle, wenn es sich nicht um allzu große Images handelt, diese über Base64 als srcString einbinden.

Base64 von einem file:
$path = 'myfolder/myimage.png';  
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);  

Diese 2 Links geben dir etwas hintergrundwissen:

https://sendgrid.com/blog/embedding-images-emails-facts/
https://mailtrap.io/blog/embedding-images-in-html-email-have-the-rules-c ...

Alternativ würde ich dass ganze über den PhpMailer abfackeln, der kümmert sich um alles

https://github.com/PHPMailer/PHPMailer
Mitglied: 149569
149569 Sep 23, 2021 updated at 14:44:29 (UTC)
Goto Top
Ich würde bei Mails sowieso mit einer Bibliothek ala PHPMailer arbeiten das vermeidet viele Anfängerfehler bezüglich Header/Kodierung&Co, da sieht das so aus:
$mail->AddEmbeddedImage('img/2u_cs_mini.jpg', 'logo_2u');
und dann im HTML wie gewohnt:
<img width=100 height=100 id="1" src="cid:logo_2u">  

ich würde an deiner stelle, wenn es sich nicht um allzu große Images handelt, diese über Base64 als srcString einbinden.
Das blocken viele Mailer aber auch bevorzugt und erhöht auch meist den SPAM Score.
Member: Gerber
Gerber Sep 23, 2021 at 14:53:49 (UTC)
Goto Top
Danke euch für die Antworten.

Ich werde testen ob ich damit weiterkomme.

Grüße
Phil
Member: Gerber
Gerber Sep 27, 2021 at 07:47:12 (UTC)
Goto Top
ich würde an deiner stelle, wenn es sich nicht um allzu große Images handelt, diese über Base64 als srcString einbinden.

Ich habe es nun mit dem base64 Code versucht.
Über PHP bekomme ich den Code zum Bild konvertiert.

Allerdings zeigt es mir das Bild nicht in der E-Mail an.

Wenn ich z.B. online den String in ein HTML Editor einfüge, bekomme ich es dort korrekt angezeigt.

Jemand eine Idee?

Grüße
Phil
Mitglied: 149569
149569 Sep 27, 2021 updated at 10:18:39 (UTC)
Goto Top
Zitat von @Gerber:
Ich habe es nun mit dem base64 Code versucht.
Über PHP bekomme ich den Code zum Bild konvertiert.

Allerdings zeigt es mir das Bild nicht in der E-Mail an.

Wenn ich z.B. online den String in ein HTML Editor einfüge, bekomme ich es dort korrekt angezeigt.

Jemand eine Idee?
Habe ich oben schon geschrieben, das liegt daran das die meisten Mail-Clients
a) dies aus Sicherheitsgründen per Default blockieren
b) und deren Rendering-Engine das nicht beherrschen
c) diese Methode vielfach die Erkennung als SPAM erhöht

Deswegen: Von dieser Methode besser die Finger lassen.
Member: Gerber
Gerber Sep 27, 2021 at 09:46:31 (UTC)
Goto Top
Habe ich oben schon geschrieben, das liegt daran das die meisten Mail-Clients
a) dies aus Sicherheitsgründen per Default blockieren
b) und deren Redering-Engine das nicht beherrschen
c) diese Methode vielfach die Erkennung als SPAM erhöht

Deswegen: Von dieser Methode besser die Finger lassen.

Mhhh, ja dann lasse ich tatsächlich lieber die Finger davon...