lostelei: Bilder in Emails einbinden

Hallo zusammen,

Ich habe ein Problem mit der Einbindung von Bildern in HTML E-Mails, das ich mir nicht erklaeren kann.

Kurzfassung des Problems: Ich programmiere ein System zum Verschicken von HTML Newslettern. Meine versendeten Newsletter weigern sich aber standhaft irgendwelche Bilder anzuzeigen - weder extern durch URL am Server, noch eingebettet als Anhang und angesteuert via CID. Woran kann es liegen?

Lange Fassung: Mein urspruenglicher Plan war es, zwei Bilder am Server liegen zu haben und sie einfach nachladen zu lassen, auf die Gefahr hin, dass Benutzer erst manuell Bilder anzeigen lassen muessen, um sie zu sehen.
Das funktionierte aber nicht. Im Browser waren nur die Platzhalter. Wenn ich jedoch Rechtsklick -> 'Bild anzeigen' nutzte, wurde es in einem neuen Fenster korrekt angezeigt. Daher kann man davon ausgehen, dass die Referenzierung auf die Bilder fehlerfrei war, und es an der Mail an sich liegt.

Da ich das nicht zum Laufen brachte, ging ich dazu ueber, die Bilder als Attachment oder Embedded Image einzubinden. Brauchte eine Weile bis ich das mit PHP richtig hinbekam, aber nun sind die Anhaenge korrekt eingebunden und theoretisch sollte ich sie via <img src="cid:bildname.jpg"> in die HTML Mail einbinden koennen, oder?
Praktisch funktioniert es jedenfalls nicht.

Ich teste den Kram in Gmail und Outlook Express. Und ansonsten kann ich durchaus Bilder anzeigen in E-Mails, nur bei meinen eigenen in PHP generierten funktioniert es nicht.

Der Code den ich verwende ist ein ganz normaler IMG Tag im Stile von
<img alt="TEWA Logo" src="cid:nl2.jpg" height="80" width="142">

Und nochmal um Irrtuemer auszuschließen: Die Mails funktionieren ansonsten einwandfrei! Der HTML Part setzt HTML um und die Anhaenge sind auch in der Mail und funktionieren einwandfrei. Nur das Referenzieren auf die Bilder um sie einzubinden will nicht klappen (der Dateiname stimmt auch, triple checked).

Irgendwelche Ideen?
Auf Wunsch kann ich auch die Mail an jemanden von euch schicken, sollte das helfen.

  1. Hello,

    ich wette, dass Du Probleme mit dem Zeilenumbruchzeichen hast.

    Um das beurteilen zu können, müsstest Du erzählen, über welches System Du die eMail versendest.

    manden von euch schicken, sollte das helfen.
    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. ich wette, dass Du Probleme mit dem Zeilenumbruchzeichen hast.

      Um das beurteilen zu können, müsstest Du erzählen, über welches System Du die eMail versendest.

      Der Server laeuft auf irgendeiner Linux Distribution, weiß grade nicht genau welche, aber das duerfte eh nicht zu viel Unterschied machen. Und ich glaube wenn ich das Problem haette, dann wuerde sich das schon viel grundsaetzlicher bemerkbar machen, indem ich gar nicht erst eine funktionierende HTML + Attachment Email bekaeme, sondern irgendein Gewirr aus MIME Types und sonstwas. Aber das Problem ist wie gesagt echt nur, dass der IMG Befehl in der Mail keine Bilder einbindet, egal ob extern und attached.

      Aber danke fuer diesen ersten Input. Hilft, das Problem weiter einzugrenzen!

      1. Hello,

        Der Server laeuft auf irgendeiner Linux Distribution, weiß grade nicht genau welche, aber das duerfte eh nicht zu viel Unterschied machen. Und ich glaube wenn ich das Problem haette, dann wuerde sich das schon viel grundsaetzlicher bemerkbar machen, indem ich gar nicht erst eine funktionierende HTML + Attachment Email bekaeme, sondern irgendein Gewirr aus MIME Types und sonstwas. Aber das Problem ist wie gesagt echt nur, dass der IMG Befehl in der Mail keine Bilder einbindet, egal ob extern und attached.

        Nimm mal für die Umbrüche nur "\n" und NICHT \r\n", auch in den Headern und besonders auch beim Wrappen der base64-codierten Bilder.

        define (WRAP_WIDTH, 75);         // 75 ist Standard
           define (WRAP_END, "\n");         // \r\n ist Standerd, stört aber.

        $img_emdedded = chunk_split (base64_encode($img),WRAP_WIDTH,WRAP_END);

        Das nur mal eben ausgeschnitten aus meiner Lösung, die auch funktioniert... :-)

        Ich hatte damals die gleichen Probleme, wie Du sie gerade beschreibst.

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Nimm mal für die Umbrüche nur "\n" und NICHT \r\n", auch in den Headern und besonders auch beim Wrappen der base64-codierten Bilder.

          define (WRAP_WIDTH, 75);         // 75 ist Standard
             define (WRAP_END, "\n");         // \r\n ist Standerd, stört aber.

          $img_emdedded = chunk_split (base64_encode($img),WRAP_WIDTH,WRAP_END);

          Das nur mal eben ausgeschnitten aus meiner Lösung, die auch funktioniert... :-)

          Ich hatte damals die gleichen Probleme, wie Du sie gerade beschreibst.

          Das macht leider in meinem Fall keinerlei Unterschied, wenn ich base64_encode noch diese Parameter fuettere. (Wobei die Bilder ja die ganze Zeit schon in Ordnung sind im Anhang, also die lassen sich einwandfrei oeffnen)

          Danke trotzdem!

          1. Hello,

            Das macht leider in meinem Fall keinerlei Unterschied, wenn ich base64_encode noch diese Parameter fuettere. (Wobei die Bilder ja die ganze Zeit schon in Ordnung sind im Anhang, also die lassen sich einwandfrei oeffnen)

            Dann kann ich Dir ohne deinen Code auch nicht weiterhelfen.

            Ein harzliches Glückauf

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de