Blame | Letzte Änderung | Log anzeigen | RSS feed
<?// $Id: mail.php 24 2007-07-03 10:41:26Z tiefland $//Variablen initialisieren$encoding=iconv_get_encoding();$headers=array();$email=(isset($_POST["email"]))?$_POST["email"]:"info@weban.de";$_from=(isset($_POST["_from"]))?$_POST["_from"]:$email;$_to=(isset($_POST["_to"]))?$_POST["_to"]:$email;$recipient=(isset($_POST["recipient"]))?$_POST["recipient"]:$email;$_subject=(isset($_POST["_subject"]))?$_POST["_subject"]:"";$subject=(isset($_POST["subject"]))?$_POST["subject"]:"";$_target=(isset($_POST["_target"]))?$_POST["_target"]:"";$redirect=(isset($_POST["redirect"]))?$_POST["redirect"]:"";$submit=false;$cc=false;$bcc=false;$sub=false;$ref=$_SERVER["HTTP_REFERER"];$start = strpos ($ref, "//");// Referrer überprüfenif ($start < 0){$start = 0;}else{$start = $start + 2;}$stop = strpos ($ref, "/", $start);// Variable $_POST auf "submit" als Array-Key überprüfen// falls nicht gefunden ==> ENDE/* foreach ($_POST as $key => $value){if (strtolower($key)=="submit"){$submit=true;}}if (substr ($ref, $start, $stop-$start) != $_SERVER["SERVER_NAME"]||!$submit) */if (substr ($ref, $start, $stop-$start) != $_SERVER["SERVER_NAME"]){exit;}//Body zusammenbauenforeach(array_keys($_POST) as $elem){if ($elem[0] == "_"){unset($_POST[$elem]);}else{if (is_array($_POST[$elem])){$_POST[$elem] = implode($_POST[$elem],", ");}$_POST[$elem] = $elem.": ".$_POST[$elem];}}$body=iconv("UTF-8","ISO-8859-15",implode($_POST,"\n"));// TO Adresse ermittelnif (!$_to){$_to = $recipient;}if (!$_subject){$_subject = iconv("UTF-8","ISO-8859-15",$subject);}else{$_subject = iconv("UTF-8","ISO-8859-15",$_subject);}// FROM Adresse ermittelnif (!$_from){if ($email){$_from = $email;}else{$_from = $_to;}}// Weiterleitungsziel ermittelnif (!$_target){if ($redirect){$_target = $redirect;}else{$_target = "danke.htm?ref=".urlencode($ref);}}else{$_target = dirname($ref)."/".$_target;}// Header überprüfen (muß leer sein)if(count($headers)){//Header wurde manipuliert!$keys=array("cc","cC","Cc","CC");foreach($keys as $key){if (isset($headers[$key])){unset($headers[$key]);$cc=true;}if (isset($headers["b".$key])){unset($headers["b".$key]);$bcc=true;}if (isset($headers["B".$key])){unset($headers["B".$key]);$bcc=true;}}}// Verschiedene Variablen überprüfen, ob "TO: BCC: CC: oder FROM: Einträge vorkommen$ereg1 = eregi("/(from\:)|(to\:)|(cc\:)|(bcc\:)/", $_to);$ereg2 = eregi("/(from\:)|(to\:)|(cc\:)|(bcc\:)/", $body);$ereg3 = eregi("/(from\:)|(to\:)|(cc\:)|(bcc\:)/", $_subject);// Eventuell vorhandenes "SUBJECT"-Feld im Header löschenforeach($headers as $header => $value){if (strtolower($headers)=="subject"){unset($headers[$header]);$sub=true;}}//Body erweitern, falls manipulierte Werte gefunden wurden!$body.=($ereg1)?"To enthielt zusätzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n":"";$body.=($ereg2)?"Body enthielt zusätzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n":"";$body.=($ereg3)?"Subject enthielt zusätzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n":"";$body.=($sub)?"Header enthielt zusätzliche Subject-Angabe!\n":"";$body.=($bcc)?"Header enthielt BCC-Angabe!\n":"";$body.=($cc)?"Header enthielt CC-Angabe!\n":"";//Prüfen, ob kein HTML in Nachricht vorkommt$no_html=($body==strip_tags($body));// Header-Array zusammenbauen$headers["From"]=$_from;$headers["Subject"]=$_subject;// PEAR-Klasse "Mail" einbinden und "mail"-Objekt erstellenrequire_once("Mail.php");$mail=Mail::factory("mail");// Prüfen, ob kein Fehler aufgetreten istif(!PEAR::isError($mail)){// Wenn alles OK istif(!$ereg1 && !$ereg2 && !$ereg3 && !$bcc && !$cc && !$sub && $no_html){//Mail verschicken$mail->send($_to, $headers, $body);$headers["Subject"]="Nachrichtenkopie auf $SERVER_NAME: ".$headers["Subject"];}else{$headers["Subject"]="Nachrichtenkopie auf $SERVER_NAME: ".$headers["Subject"]." - Spam-Nachricht";}// Nachricht erweitern$body=implode("\n",$headers)."\n$_to\n$body";// Nachrichtenkopie verschicken$mail->send("tiefland@weban.de", $headers, $body);$mail->send("niewerth@weban.de", $headers, $body);}// Auf Danke-Seite weiterleitenheader("Location: $_target");?>