Sebastian: PHP Turbomailer ;-) (für Anfänger)

Beitrag lesen

Hallo Leute,

http://www.zabdesign.de/temp/turbomailer.php

hier findet ihr einen Formmailer, der eine E-mail an einen beliebigen Empfänger sendet.

Ich habe dabei 2 Probleme:

Einmal, wenn ich Anführungszeichen im Fließtext verwende, werden vor
diese backslashes gesetzt, wenn der Text versendet wird.
Wie kann ich das verhindern?

Und des weiteren, möchte ich die Zeilenumbrüche, die ich im Formular-Feld per Hand eingebe auch in die Nachricht übernehmen.
Gibt es da eine Möglichkeit?

Einen freundlichen Gruß sendet
Sebastian

Hier der Quellcode:

<?php

function check_email($from,$to) {
  // RegEx begin
  $nonascii      = "\x80-\xff"; # Non-ASCII-Chars are not allowed

$nqtext        = "[^\\$nonascii\015\012"]";
  $qchar         = "\\[^$nonascii]";

$protocol      = '(?:mailto:)';

$normuser      = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
  $quotedstring  = ""(?:$nqtext|$qchar)+"";
  $user_part     = "(?:$normuser|$quotedstring)";

$dom_mainpart  = '[a-zA-Z0-9][a-zA-Z0-9._-]*\.';
  $dom_subpart   = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*';
  $dom_tldpart   = '[a-zA-Z]{2,5}';
  $domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";

$regex         = "$protocol?$user_part@$domain_part";
  // RegEx end

return preg_match("/^$regex$/",$from);
   return preg_match("/^$regex$/",$to);
}

//Referer gesetzt?
    if (isset($HTTP_REFERER)) {
        $mailtext.= $_POST["text"];
    }
    else {
        $mailtext.= ".\n";
    }

//Vorsichtshalber das Array vor dem Durchlaufen zurücksetzen (interner Zeiger auf Position [0])
    reset ($_POST);

while (list ($varname, $varvalue) = each ($_POST)) {

if(empty($_POST["to"])) {
            echo "Bitte einen Empfänger angeben!";
            $fehler = 1;
            exit();
            }
             if(empty($_POST["from"])) {
            echo "Bitte einen Absender angeben!";
            $fehler = 1;
            exit();
            }
            if(check_email($from)==false or check_email($to)==false) {
            echo "Bitte eine gültige E-Mail-Adresse angeben!";
            $fehler = 1;
            exit();
            }
            if(empty($_POST["text"])) {
            echo "Es fehlt die Nachricht!";
            $fehler = 1;
            exit();
            }
     }
$header .= "From:" .$_POST["from"]."\n";
$header .= "Reply-To:" .$_POST["to"]."\n";
$header .= "X-Mailer: PHP/" .phpversion(). "\n";
$header .= "Content-Type: text/plain; charset="iso-8859-1"\n";
$header .= "Content-Transfer-Encoding: 8bit\n";

mail($_POST["to"], $_POST["subject"], $mailtext, $header);

if (check_email($to)==true and check_email($from)==true and isset($fehler)==false){

echo "Folgende Daten wurden gesendet!\n<br>\n---------------------------------------------------------------------------------------\n<br>\n<br>"
        . "<b>Absender: </b>" .$_POST["from"]."<br>"
        ."<b>Empfänger: </b>" .$_POST["to"]."<br><br>"
        ."<b>Ihre Nachricht: </b>" .$_POST["text"];
 }
  ?>