K
kunstler
Hallo zusammen!
habe mich soeben hier angemeldet, weil ich mittlerweile stundenlang nach einer Lösung für mein (wahrscheinlich ganz triviales) Problem gesucht habe (auch auf diesen Seiten), aber noch nichts passendes gefunden habe.
Ich bin ein PHP-Neuling ...
Situation:
1.
Formulardaten werden mit $_POST[] eingelesen und aus Sicherheitsgründen sofort mit stripslashes() und. htmlentities() escaped, weil ich sie später mal auf der Webseite ausgeben will. In etwa so:
2.
Nun will ich diese Daten per mail() versenden. In etwa so:
3.
Funktioniert bis hier her auch alles einwandfrei und die Email kommt auch genau so an wie ich mir das vorstelle.
Problem:
Wenn nun im Formular bspw.
"Günther" oder
"Straße" oder
">"
oder sonstige Zeichen, die mittels htmlentities() in Html-Code umgewandelt wurden, eingegeben werden, dann stehen die in der Email natürlich auch in ihrer Html-Code-Entsprechung, also bspw.
Günther
Straße
>
Frage: Wie kann ich diese Html-Codierung in der Email wegbekommen? Ziel ist also, dass quasi die üblichen Sonderzeichen auch als Sonderzeichen in quasi beliebigen Email-Programmen angezeigt werden.
Eigene Lösungsansätze
Ich habe bereits versucht, die per mail() übermittelte Nachricht irgendwie umzucodieren, allerdings hat das rein gar nichts am Emailtext verändert. Ich habe es in etwa so versucht:
Was mache ich falsch? Bitte um Unterstützung.
Danke!
habe mich soeben hier angemeldet, weil ich mittlerweile stundenlang nach einer Lösung für mein (wahrscheinlich ganz triviales) Problem gesucht habe (auch auf diesen Seiten), aber noch nichts passendes gefunden habe.
Ich bin ein PHP-Neuling ...
Situation:
1.
Formulardaten werden mit $_POST[] eingelesen und aus Sicherheitsgründen sofort mit stripslashes() und. htmlentities() escaped, weil ich sie später mal auf der Webseite ausgeben will. In etwa so:
PHP:
function esc($text) {
if (get_magic_quotes_gpc())
$text = stripslashes($text);
$text = htmlentities($text, ENT_QUOTES);
$text = trim($text);
return $text;
}
// ...
$vorname = esc($_POST['vorname']);
$nachname = esc($_POST['nachname']);
$nachricht= esc($_POST['nachricht']);
// ...
2.
Nun will ich diese Daten per mail() versenden. In etwa so:
PHP:
$empfaenger = "...";
$betreff = "...";
$nachricht = "Die ist eine Email von ".$vorname." bla bla. Nachricht: ".$nachricht;
$header = "...";
mail($empfaenger, $betreff, $nachricht, $header);
3.
Funktioniert bis hier her auch alles einwandfrei und die Email kommt auch genau so an wie ich mir das vorstelle.
Problem:
Wenn nun im Formular bspw.
"Günther" oder
"Straße" oder
">"
oder sonstige Zeichen, die mittels htmlentities() in Html-Code umgewandelt wurden, eingegeben werden, dann stehen die in der Email natürlich auch in ihrer Html-Code-Entsprechung, also bspw.
Günther
Straße
>
Frage: Wie kann ich diese Html-Codierung in der Email wegbekommen? Ziel ist also, dass quasi die üblichen Sonderzeichen auch als Sonderzeichen in quasi beliebigen Email-Programmen angezeigt werden.
Eigene Lösungsansätze
Ich habe bereits versucht, die per mail() übermittelte Nachricht irgendwie umzucodieren, allerdings hat das rein gar nichts am Emailtext verändert. Ich habe es in etwa so versucht:
PHP:
$nachricht = utf8_decode($nachricht);
// oder
$nachricht = utf8_encode($nachricht);
// oder modifizierte Header-Angaben
$header = "...";
$header .= "Content-Type: text/plain; charset='utf-8'\n";
// und-oder
$header .= "Content-Transfer-Encoding: 8bit\n";
// und-oder
$header .= "Content-type:text/plain; charset=iso-8859-1\n";
// und-oder
$header .= "Content-Transfer-Encoding: quoted-printable\n";
Was mache ich falsch? Bitte um Unterstützung.
Danke!