HTML-E-Mail mit PHP erstellen

Eine HTML E-Mail mit PHP zu erstellen ist nicht schwierig. Dazu muss man nur wissen, wie man eine HTML-Seite erstellt und dass im Header der E-Mail der entsprechende MIME-Type mitgegeben wird. MIME steht für Internet Media Type (nach der Spezifikation Multipurpose Internet Mail Extensions, daher die Abkürzung).

Im folgenden wird als erstes in der Variablen $mailtext die HTML-E-Mail erstellt. Diese kann auch auf dem Bildschirm ausgegeben werden und kommt dann wie eine normale HTML-Seite.

Die ersten 2 Zeilen beim erstellen des Headers sind dafür zuständig, dass der korrekte MIME-Type eingestellt wird und der richtige Zeichensatz. Einfach probieren. Der Rest ist identisch mit der "normalen" E-Mail im vorherigen Kapitel.

PHP-Quellcode: HTML-E-Mail über PHP erstellen
<?php
$mailtext = '<html>
<head>
    <title>HTML-E-Mail mit PHP erstellen</title>
</head>
 
<body>
 
<h1>HTML-E-Mail mit PHP erstellen</h1>
 
<p>Diese E-Mail wurde mit PHP und HTML erstellt</p>
 
<table border="1">
  <tr>
    <td>Beschreibung</td>
    <td>Anzahl Seiten</td>
  </tr>
  <tr>
    <td>PHP lernen mit PHP-Kurs.com</td>
    <td>über 100</td>
  </tr>
</table>
 
<p>Die meisten HTML-Tags wie <b>fett</b>
und <i>kursiv</i> stehen zur
Verfügung</p>
 
</body>
</html>
';
 
$empfaenger = "du@testkarnickel.de"; //Mailadresse
$absender   = "ich@testkarnickel.de";
$betreff    = "Mail-Test - HTML-E-Mail mit PHP erstellen";
$antwortan  = "ICH@testkarnickel.de";
 
$header  = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
 
$header .= "From: $absender\r\n";
$header .= "Reply-To: $antwortan\r\n";
// $header .= "Cc: $cc\r\n";  // falls an CC gesendet werden soll
$header .= "X-Mailer: PHP ". phpversion();
 
mail( $empfaenger,
      $betreff,
      $mailtext,
      $header);
 
echo "Mail wurde gesendet!";
?>

E-Mail werden nur Online versendet - probieren Sie dies unter einer Entwicklungsumgebung wie XAMPP, wird keine E-Mail losgesendet, obwohl alles korrekt ist. Das liegt dann daran, dass unter XAMPP keine E-Mail-Server etc. eingetragen sind.

Noch eine kleine Anmerkung: HTML-E-Mails sind nicht besonders gern gesehen, wenn es auch mit Text-E-Mails gehen würde.

Was gegen HTML-E-Mails spricht:

  • In HTML-E-Mails kann jede Menge Quatsch transportiert werden,
  • diese sind größer als Notwendig,
  • es kann im Hintergrund je nach Einstellungen des E-Mail-Programmes mit ein paar Kniffen kontrolliert werden, wann der Empfänger die erhaltene E-Mail angesehen hat (und auch ob er diese öfters angesehen hat).

Es sollte also einen guten Grund geben, warum Sie HTML-E-Mail anstatt normaler Text-E-Mails einsetzen (und bitte nicht mit dem Grund "es sieht schöner aus").