phpMailer Eingebettetes Bild öfter verwenden

max

Erfahrenes Mitglied
Mein Problem ist folgendes:
Ich habe die phpMailer Klasse um eine Funktion erweitert sodass alle bilder die in der E-Mail sind automatisch eingebettet werden, das funktioniert auch soweit einwandfrei, nur sobald ein Bild öfters als einmal vorkommt, wird nur eines korrekt angezeigt bei den anderen hat es den Anschein dass sie nicht vorhanden sind.

PHP:
    function embed_img_replace($treffer) {
        $cid = md5($treffer[2] );
        $name = basename($treffer[2] );
        $urlArray = parse_url($treffer[2]);
        $absPfad = '/var/www/.../'.$urlArray['path'];
        $returnTag = '<img'.$treffer[1].'src="cid:'.$cid.'"'.$treffer[3].'>';
        $this->AddEmbeddedImage($absPfad, $cid, $name);
        return $returnTag;    
    }
    
    function embed_all_img($parseText) {
        $parseText = stripcslashes($parseText);
        $imgPattern = ',[<]?img([^>]*)src="([^"]+)"([^>]*)>,is';
        $imgReplace = 'embed_img_replace';
        
        $returnText = preg_replace_callback($imgPattern,array( &$this, 'embed_img_replace'),$parseText);
        
        return $returnText;
    }
Zur Funktion:
Ich durchsuche den Code der Mail nach Image Tags und bearbeite diese mit der Callbackfunktion embed_img_replace(). Diese Funktion ruft auch die Eigentliche Funktion zum Einbetten der Bilder auf, gleichzeitig bearbetet sie den Image Tag so das er mit einer CID ausgestattet wird.

Ich hab mir schon gedacht ich könnte einfach bei jedem Bild an die CID einen Zufallsstring anhängen damit bei 2 gleichen Bildern nicht die gleiche CID herauskommt, das hat aber leider auch nichts geholfen.

Danke
 
Ich hab jetzt noch ein paar möglichkeiten versucht zB. den Pfad anders anzugeben und noch mit dem Aufruf der Dateien etwas herumgespielt bin aber auch nicht auf das gewünscht Ergebnis gekommen.

Was wahrscheinlich gehen würde, wenn ich das Bild ein einen Temporären Ordner mit einem Individuellen Namen speichern würde und einfach nach dem Versenden wieder löschen, aber das will ich irgendwie nicht machen da das Ganze dann doch recht auf die Performance gehen würde (denk ich mal).

Wäre wirklich sehr froh wenn mir da jemand weiterhelfen kann.
 
Zurück