Maleficia: html-emails mit formmailer versenden

Hallo zusammen,
ich bastel gerade an einem Formmailer. Die Daten aus dem Formular werden auch wie gewünscht versendet. Doch schaut alles noch recht mager aus.
Da ich es nicht schaffe die email als html zu versenden.

Der momentane Code:
if($fehler == 'nein') {
 mail("$adminemail",
   "$adminbetreff",
   "$_POST[absendername]
   (eMail: $_POST[absenderemail]) schrieb Ihnen am $datum um $zeit Uhr folgende Nachricht:
\n---------------------------------------\n

Vodafone VB Name: $_POST[vvbname]
Vodafone VB eMail: $_POST[adminemail]

Name Kunde: $_POST[absendername]
eMail Kunde: $_POST[absenderemail]

Artikel 1: $_POST[artikel01]
Preis Artikel 1: $_POST[preis01]
Menge Artikel 1: $_POST[menge01]
Beschreibung Artikel 1: $_POST[beschreibung01]
Artikel 2: $_POST[artikel02]
Preis Artikel 2: $_POST[preis02]
Menge Artikel 2: $_POST[menge02]
Beschreibung Artikel 2: $_POST[beschreibung02]
Artikel 3: $_POST[artikel03]
Preis Artikel 3: $_POST[preis03]
Menge Artikel 3: $_POST[menge03]
Beschreibung Artikel 3: $_POST[beschreibung03]
Artikel 4: $_POST[artikel04]
Preis Artikel 4: $_POST[preis04]
Menge Artikel 4: $_POST[menge04]
Beschreibung Artikel 4: $_POST[beschreibung04]

$_POST[nachricht]
\n---------------------------------------\nIP-Adresse: $ip", "From:$_POST[absenderemail]");
if($_POST[sendemail] == "1") {
 mail("$_POST[absenderemail]",
   "$kopiebetreff" ,
   "
Sie schrieben am $datum um $zeit Uhr folgende Nachricht:\n\n
VB Name: $_POST[vvbname]
VB eMail: $_POST[adminemail]

Name Kunde: $_POST[absendername]
eMail Kunde: $_POST[absenderemail]

Artikel 1: $_POST[artikel01]
Preis Artikel 1: $_POST[preis01]
Menge Artikel 1: $_POST[menge01]
Beschreibung Artikel 1: $_POST[beschreibung01]
Artikel 2: $_POST[artikel02]
Preis Artikel 2: $_POST[preis02]
Menge Artikel 2: $_POST[menge02]
Beschreibung Artikel 2: $_POST[beschreibung02]
Artikel 3: $_POST[artikel03]
Preis Artikel 3: $_POST[preis03]
Menge Artikel 3: $_POST[menge03]
Beschreibung Artikel 3: $_POST[beschreibung03]
Artikel 4: $_POST[artikel04]
Preis Artikel 4: $_POST[preis04]
Menge Artikel 4: $_POST[menge04]
Beschreibung Artikel 4: $_POST[beschreibung04]

$_POST[nachricht]","From:$adminemail");
}

Dieser Teil:

VB Name: $_POST[vvbname]
VB eMail: $_POST[adminemail]

Name Kunde: $_POST[absendername]
eMail Kunde: $_POST[absenderemail]

Artikel 1: $_POST[artikel01]
Preis Artikel 1: $_POST[preis01]
Menge Artikel 1: $_POST[menge01]
Beschreibung Artikel 1: $_POST[beschreibung01]
Artikel 2: $_POST[artikel02]
Preis Artikel 2: $_POST[preis02]
Menge Artikel 2: $_POST[menge02]
Beschreibung Artikel 2: $_POST[beschreibung02]
Artikel 3: $_POST[artikel03]
Preis Artikel 3: $_POST[preis03]
Menge Artikel 3: $_POST[menge03]
Beschreibung Artikel 3: $_POST[beschreibung03]
Artikel 4: $_POST[artikel04]
Preis Artikel 4: $_POST[preis04]
Menge Artikel 4: $_POST[menge04]
Beschreibung Artikel 4: $_POST[beschreibung04]

sollte eigentlich eine Tabelle sein

Wie z.b.:
<table width="100%" border="0" cellpadding="0" cellspacing="0">
 <tr>
  <td>
   <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
   VB Name: $_POST[vvbname]<br />
   VB eMail: $_POST[adminemail]<br />
   Name Kunde: $_POST[absendername]<br />
   eMail Kunde: $_POST[absenderemail]<br />
   <br>
   <strong>Artikel 1: $_POST[artikel01]</strong>Preis Artikel 1: $_POST[preis01]<br>
   </font>
  </td>
 </tr>
</table>

Wenn mir bitte jemand erklären könnte wie ich hier eine Tabelle einbauen kann bzw. die email als html versendet wird wäre ich dankbar.

Gruss
Michael

  1. Hello,

    Tipp 1: hier im Archiv nach "MIME Mail" suchen
    Tipp 2: bastel Dir mit deinem Outlook Express oder vergleichbaren Client
            - einfache Textmail
            - einfache Textmail mit Anhang (klein lassen, geht ja nur ums Prinzip)
            - einfache HTML-Mai (nur Text)
            - einfache HTML-Mail mit eingebettetem Bildchen

    und schau dir die Ergebnisse an. Dass sollte das Prinzip sehr schnell klar werden.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

  2. Hi!

    Deine Variablen sind alle falsch.

    $_POST[absendername]

    Es wird kein $_POST[absendername] geben, sondern $_POST['absendername']. Je nachdem, wie das error_reporting eingestellt ist, wirst du nervige Meldungen bekommen.
    Das könnte eventuell auch zum Versagen deines Scriptes führen, wenn du z.B. irgendwo die header()-Funktion einsetzt.

    Da ich es nicht schaffe die email als html zu versenden.

    Natürlich wird die Mail nicht als HTML-Mail versendet. Wie auch?
    Setzt den Content-Type auf text/html.

    Außerdem solltest du der Mail noch einige weitere Header mitgeben. Eine Charset-Angabe wäre wichtig, damit deine Sonderzeichen/Umlaute auch korrekt angezeigt werden. Ansonsten muß der Client ja raten, um welches Encoding es sich handelt.

    Sowas hier in der Art solltest du also einbauen:
    $headers = "From: $_POST['absendername']\r\n";
    $headers.= "Reply-To: $_POST['absendername']\r\n";
    $headers.= "MIME-Version: 1.0\r\n";
    $headers.= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers.= "X-Mailer: PHP/" . phpversion();

    (Headerzeilen müssen mit \r\n getrennt werden. Die meisten MTAs meckern zwar auch bei einem alleinigen \n nicht, aber es ist halt nicht korrekt und man kann sich nicht immer darauf verlassen, daß es auch so funktioniert.)

    BTW: Aber sicherlich hättest du das auch alles alleine rausfinden können, wenn du mal im PHP-Handbuch unter der Funktion mail() nachgeschlagen hättest.
    Da steht ganz sicher was dazu. Falls nicht im Text, dann in den "User Contributed Notes":
    http://de3.php.net/manual/de/ref.mail.php

    Gruß,
    rob