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-ID: 1296618662

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

Ausgedruckt am: 04.12.2024 um 08:12 Uhr

godlie
godlie 23.09.2021 aktualisiert um 15:29:48 Uhr
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
149569
149569 23.09.2021 aktualisiert um 16:44:29 Uhr
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.
Gerber
Gerber 23.09.2021 um 16:53:49 Uhr
Goto Top
Danke euch für die Antworten.

Ich werde testen ob ich damit weiterkomme.

Grüße
Phil
Gerber
Gerber 27.09.2021 um 09:47:12 Uhr
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
149569
149569 27.09.2021 aktualisiert um 12:18:39 Uhr
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.
Gerber
Gerber 27.09.2021 um 11:46:31 Uhr
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...