• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Text als HTML kommt falsch in email

_R_A_L_F_

Mitglied
Hallo, habe ein Problem mit dem Inhalt einer HTML - Email.

Über einem Editor wird der Text bearbeitet in z.B.:
<b><font class="Apple-style-span" color="#990000"> Hier klicken um neuen Newsletter zu erstellen </font></b>

Diesen will ich nun als HTML - Email versenden. Die HTML - tags sollen dann natürlich wieder als HTML Seite in der Email angezeigt werden.

Bei mir steht in der Email aber immer nur der oben genannte Text:
<b><font class="Apple-style-span" color="#990000"> Hier klicken um neuen Newsletter zu erstellen </font></b>

Wie bekomme ich das hin, dass die Inhalte der Email als HTML - Seite (also wie eine HTML - Email) angezeigt wird?

Hier der Quelltext:
PHP:
<html>
<head>
<meta charset="utf-8">
    <title>Newsletter erstellen</title>
    
</head>
<body>
<script src="/home/admin/editor/nicEdit.js"></script>
<script type="text/javascript">
    bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });
</script>

    <p class="h11">Newsletter erstellen</p>
 
<?php

// Button gedrückt
if (isset($_POST['submit'])) {

//Textarea Inhalt auslesen 
$value = $_POST['area']; 

//Text in HTML - Zeichen umwandeln
if ( get_magic_quotes_gpc() )
            $value = htmlspecialchars( stripslashes((string)$value) );
        else
            $value = htmlspecialchars( (string)$value );


// E-mail fürs freischalten versenden
$mailtext = '<html>
<head>
</head>
<body>
'.$value.'
</body>
</html>
';

$empfaenger = "[email protected]"; //Mailadresse
$absender   = "[email protected]";
$betreff    = "Neuer Newsletter";
$header  = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
$header .= "From: [email protected]\r\n";
$header .= "Reply-To: [email protected]\r\n";
$header .= "X-Mailer: PHP ". phpversion();
mail( $empfaenger,
      $betreff,
      $mailtext,
      $header);

echo "Email versendet";
exit;

}

?>

<center>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <textarea name="area" rows="30" cols="100">
            Hier klicken um neuen Newsletter zu erstellen
            </textarea>
        </p>
        <p>
            <input type="submit" value="Newsletter versenden" name="submit">
        </p>
    </form>
    </center>

 
</body>
</html>

Danke
 
//Textarea Inhalt auslesen
$value = $_POST['area'];

//Text in HTML - Zeichen umwandeln
if ( get_magic_quotes_gpc() )
$value = htmlspecialchars( stripslashes((string)$value) );
else
$value = htmlspecialchars( (string)$value );


// E-mail fürs freischalten versenden
$mailtext = '<html>
<head>
</head>
<body>
'.$value.'
</body>
</html>
';

Danke für die Antwort aber ich hab doch schon die Funktion htmlspecialchars() verwendet. Der eingegebene String wird ja auch in HTML - Code ausgegeben. Nur in der E-mail wird es nicht umgewandelt.
 
ich hab doch schon die Funktion htmlspecialchars() verwendet.
Ja eben! Die Eingabe in deinem Textfeld soll ja HTML-Code sein und den wandelst du mit htmlspecialchars in Text um, das willst du doch garnicht.

Außerdem empfehle ich dir eine fertige Klasse w.z.B. den phpMailer einzusetzen und eben nicht die mail()-Funktion.
 
ja eben nicht. Ich habe ein Textfeld das mittels Editor bearbeitet wird. Über

$value = htmlspecialchars($_POST['textfeld']);

bekomme ich den bearbeiteten Inhalt als HTML - Code das im Textfeld eingegeben wurde zurück z.B.

<b>Hallo Ihr</b>

Was ja soweit auch passt.

Nur wenn ich dann die HTML - Mail baue, dann ist es so, dass eben der Text in der Email nicht als HTML sondern rein als <b>Hallo Ihr</b> dargestellt wird.
 
hast du dir die funktion überhaupt durchgelesen?

htmlspecialchars wandelt unter anderem < in &lt; und > in &gt; um und deshalb bekommst du das ganze als text angezeigt!

wenn du das htmlspecialchars entfernst funktioniert es. hoffentlich haben keine normalen benutzer sondern nur admins zugriff auf das formular ;) aber so wie es aussieht darf das jeder abschicken.
 
ja, durchgelesen schon aber ich dachte eben, dass ich den Code:
<b><font class=\"Apple-style-span\" size=\"5\" face=\"\'comic sans ms\'\"> Hier klicken um neuen Newsletter zu erstellen </font></b>

so in die Variable schreiben muss. Stattdessen, ist es ja genau anderes rum.... *auf der Leitung sitz*

Aber eine Frage habe ich noch. Der Editor spuckt den Code so raus:
<b><font class=\"Apple-style-span\" size=\"5\" face=\"\'comic sans ms\'\"> Hier klicken um neuen Newsletter zu erstellen </font></b>

Die Schriftart wird aber in der E-mail nicht verändert. An was liegt das? Würde es klappen, wenn ich eine fertige PHP-Klasse verwenden würde?

Danke nochmal ;)
 
Und du kommst nicht von alleine auf die Idee, dass die Backslashes das Problem sein könnten?
 
ich hab es so oft probiert in jeder Variante (dacht ich zumindest) und jedes mal hat es nicht geklappt. Kann doch mal passieren.
 
Du kannst dir diese Zeile übrigens spaaren. Ist heutzutage standartmäßig nicht eingeschaltet. Falls es bei dir doch eingeschaltet ist machst du oder dein Hoster etwas falsch.

PHP:
if ( get_magic_quotes_gpc() )
 
Zurück
Oben