Rolf Bensch: PHP: HTML-Email mit Anhang

Beitrag lesen

Hallo NG,

ich möchte per PHP eine HTML-Email mit Anhang (Logo) versenden und das Logo als Inhalt der HTML-Mail verwenden. Nach meinen Recherchen sollte nachfolgender Code alle Bedingungen für eine "multipart/mixed"-Email erfüllen, beim Empfänger wird die Nachricht allerdings nur als Plain-Text angezeigt und sie erhält keinen Anhang.

Was habe ich vergessen?

  
<?php  
$html = "<html>\n"  
       ."  <head>\n"  
       ."    <title>Tesmail</title>"  
       ."    <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>\n"  
       ."    <style type='text/css'>\n"  
       ."      h1    { color:red}\n"  
       ."      #logo { width:150px; position:absolute; right:20px; top:20px}\n"  
       ."    </style>\n"  
       ."  </head>\n"  
       ."  <body>\n"  
       ."    <h1>Testüberschrift</h1>\n"  
       ."    <p>Absatz mit Text</p>\n"  
       ."    <img id='logo' src='Logo_LH_black.jpg' alt='Logo'>\n"  
       ."  </body>\n"  
       ."</html>\n";  
  
  $Vorname="Hans";  
  $Nachname="Mustermann";  
  $Domain="irgendwo.org";  
			  
  $Empfaenger ="$Vorname.$Nachname@$Domain";  
  
  $Betreff ="Test: HTML-Email versenden mit Anhang";  
	  
  $AnhangPfad=$_SERVER['DOCUMENT_ROOT']."/Grafiken/Logo_LH_black.jpg";  
  $AnhangName="Logo.jpg";  
  $AnhangInhalt = file_get_contents($AnhangPfad);  
	  
  $trenner= md5(uniqid(time()));  
  
  $headers = "From: $Vorname $Nachname <$Vorname.$Nachname@$Domain>\n"  
     . "MIME-Version: 1.0\n"  
     . "Content-Type: multipart/mixed;\n boundary = $$trenner\n\n"  
     . "Content-Transfer-Encoding: 8bit\n\n";  
  $mailtext = "This is a multi-part message in MIME format\n"  
     .	"--$trenner\n"  
     . "Content-Type: text/html; charset=UTF-8\n"  
     . "Content-Transfer-Encoding: quoted-printable\n"  
     . $html."\n\n"  
     . "--$trenner\n"  
     . "Content-Type: image/jpeg; charset=UTF-8; name='Logo_LH_black.jpg'\n"  
     . "Content-Transfer-Encoding: base64\n"  
     . "Content-Disposition: attachment; filename='Logo_LH_black.jpg'\n"  
     . chunk_split(base64_encode($AnhangInhalt))  
     . "\n"  
     . "--$trenner--";  
	  
  if (@mail($Empfaenger, $Betreff,  $mailtext, $headers)) {  
    echo "Die Mitteilung wurde erfolgreich per Email versendet.<br><br>";  
    echo $html;  
  } else {  
    echo "<p style=color:red;>FEHLER: Pressemitteilung konnte <b>nicht</b> per Email versendet werden.</p>";  
  }  
?>