Sascha B.: PEAR Mail_Mime - Probleme mit eingebetteter Grafik in HTML-Mail

Beitrag lesen

Hallo zusammen,

mittels Mail_Mime möchte ich eine HTML-Mail verschicken, in der ich eingebettete Grafiken verwende. Der PHP-Code unten funktioniert für Microsoft Outlook 2007, bei anderen Clients wie Thunderbird (und diversen Webmail-Clients) hingegen wird die eingebettete Grafik als Anhang angezeigt und nicht in der HTML-Mail dargestellt.

Mit den Parametern (CRLF, Encoding usw.) habe ich bereits "herumgespielt", allerdings ohne Ergebnis.

Hat jemand Erfahrung hiermit und/oder kennt dieses Problem?

Vielen Dank vorab für Eure Unterstützung!

Beste Grüße,
Sascha

--

Der folgende PHP-Code basiert auf dem Beispiel unter http://pear.php.net/ ... example.php

  
include('Mail.php');  
include('Mail/mime.php');  
  
$mime = new Mail_mime("\r\n");  
  
$headers = array(  
                    'From'     => 'Firstname Lastname <example@example.com>',  
                    'Subject'  => $subject  
           );  
  
$image = $_SERVER['DOCUMENT_ROOT'] . '/images/test.jpg';  
  
$html  = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";  
$html .= "<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"de-DE\">";  
$html .= "<head>";  
$html .= "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />";  
$html .= "<meta http-equiv=\"content-style-type\" content=\"text/css\" />";  
$html .= "<meta http-equiv=\"content-script-type\" content=\"text/javascript\" />";  
$html .= "</head>";  
$html .= "<body>";  
$html .= "<p>Message</p>";  
$html .= "<img src=\"cid:" . basename($image) . "\" style=\"width: 320px; height: 320px; border: none;\" width=\"320\" height=\"240\" border=\"0\" alt=\"\" />";  
$html .= "</body>";  
$html .= "</html>";  
  
$plain  = "Message ...\n";  
$plain .= "Message ...\n";  
  
$mime->setTXTBody($plain);  
$mime->setHTMLBody($html);  
  
$mime->addHTMLImage(file_get_contents($image), 'image/jpeg', basename($image), false);  
  
$body    = $mime->get(array('text_encoding' => '8bit', 'head_charset' => 'UTF-8', 'text_charset' => 'UTF-8', 'html_charset' => 'UTF-8'));  
$headers = $mime->headers($headers);  
  
$mail =& Mail::factory('mail');  
$mail->send("Firstname Lastname <example@example.comexample@example.com>", $headers, $body);  

--

Dies ist der Body, den der durch Mime_Mail erzeigt wird (Grafik und HTML gekürzt):

--=_76676333af51f969e6af1ea30f9dada9  
Content-Transfer-Encoding: 7bit  
Content-Type: text/plain; charset=UTF-8  
  
--=_76676333af51f969e6af1ea30f9dada9  
Content-Type: multipart/related;  
 boundary="=_207b44ab093f8cccbb0845e755a202c7"  
  
--=_207b44ab093f8cccbb0845e755a202c7  
Content-Transfer-Encoding: quoted-printable  
Content-Type: text/html; charset=UTF-8  
  
%HTML_MAIL%  
--=_207b44ab093f8cccbb0845e755a202c7  
Content-Transfer-Encoding: base64  
Content-ID: <7ce201431aac45ffc0211fa3454685e1>  
Content-Type: image/jpeg;  
 name=mail-1.jpg  
Content-Disposition: inline;  
 filename=test.jpg  
  
%BASE64_ENCODED_IMAGE%  
--=_207b44ab093f8cccbb0845e755a202c7--  
  
--=_76676333af51f969e6af1ea30f9dada9--