Hier ein Fragment Code, mit dem man in Pimcore aus bereits bestehendem HTML-Code eine HTML-Email mit eingebetteten Bildern machen kann:
<?php require_once('Zend/Mail.php'); $doc = new DOMDocument(); @$doc->loadHTML($body); $tags = $doc->getElementsByTagName('img'); $counter = 0; $mail = new Zend_Mail(); foreach ($tags as $tag) { $counter++; $body = str_replace($tag->getAttribute('src'),"cid:img_".$counter,$body); $tmp = array_reverse(explode("/",$tag->getAttribute('src'))); $bildname = $tmp[0]; $size = getimagesize(PIMCORE_DOCUMENT_ROOT . $tag->getAttribute('src')); if(strpos($tag->getAttribute('src'),"http://") !== false) { $output = file_get_contents($tag->getAttribute('src')); } else { $filename = PIMCORE_DOCUMENT_ROOT . $tag->getAttribute('src'); $output = file_get_contents($filename); } $attachment = $mail->createAttachment( $output, $size['mime'], Zend_Mime::DISPOSITION_INLINE, Zend_Mime::ENCODING_BASE64, $bildname ); $attachment->id = "img_".$counter; } $mail->setBodyText($body); $mail->setFrom('absender@absenderbeispiel.com', 'Ein Absender'); $mail->addTo('jemand@anders.com', 'Ein Empfänger'); $mail->setSubject('Eine eMail mit eingebetteten Bildern'); $mail->setType(Zend_Mime::MULTIPART_RELATED); $mail->send(); ?>
Hierbei wird das DOMDocument benutzt, um das HTML zu parsen und die IMG-Elemente abzuarbeiten. So kann zielgerichtet das src-Attribut ausgelesen werden, um dessen Inhalt im per str_replace zu verändern. Die URL wird zum Einbetten in die cid: Notation gewandelt, die in eMails gebraucht wird zur Identifikation des Attachment.