Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php// $Id: mail.php 28 2007-09-28 12:28:21Z tiefland $//Variablen initialisieren$headers = array();$email = (isset($_POST["email"])) ? $_POST["email"] : "info@weban.de";// Existiert ein Email Schutz?if (eregi("[a-z0-9]{32}",$_POST["_to"])) {// Ja, dann ueberpruefe ob Konfiguration existiertif (file_exists('emailconfig.default.inc.php')) {include('emailconfig.default.inc.php');}// Existiert auch diese Adresseif ($GLOBALS['email_config'][$_POST["_from"]]) {$_from = $GLOBALS['email_config'][$_POST["_from"]];$_to = $GLOBALS['email_config'][$_POST["_to"]];$recipient = $GLOBALS['email_config'][$_POST["recipient"]];if (eregi("[a-z0-9]{32}",$_POST["_subject"])) {$_subject = "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];$subject = "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];} else {if ($_POST["_subject"]) {$_subject = $_POST["_subject"];$subject = $_POST["_subject"];} else {$_subject = "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];$subject = "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];}}} else {die("Sie haben einen Fehlehaften Code uebergeben.<br>");}} else {$_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=implode($_POST,"\n");// TO Adresse ermittelnif (!$_to) {$_to = $recipient;}if (!$_subject) {$_subject = $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 überpruefen (muessen 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;}}}// erweiterte Infos erstellen$linkInfo = readlink ( $_SERVER["SCRIPT_FILENAME"] );$infoString = "PHP_SELF: " . $_SERVER["PHP_SELF"] ."\n";$infoString .= "SCRIPT_NAME: " . $_SERVER["SCRIPT_NAME"] ."\n";$infoString .= "REQUEST_URI: " . $_SERVER["REQUEST_URI"] ."\n";$infoString .= "SCRIPT_FILENAME: " . $_SERVER["SCRIPT_FILENAME"] ."\n";$infoString .= "HTTP_REFERER: " . $_SERVER["HTTP_REFERER"] ."\n";$infoString .= "REMOTE_ADDR: " . $_SERVER["REMOTE_ADDR"] ."\n";$infoString .= "SYM_LINK_INFO: " . $linkInfo ."\n";$infoString .= "EMPFAENGER: " . $_to ."\n";$infoString = "\n\n=============================================\n\n". $infoString. "\n=============================================\n";// ende erweiterte Infos// Verschiedene Variablen ueberpruefen, ob "TO: BCC: CC: oder FROM: Eintraege 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 zusaetzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n" : "";$body .= ($ereg2) ? "Body enthielt zusaetzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n" : "";$body .= ($ereg3) ? "Subject enthielt zusaetzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n" : "";$body .= ($sub) ? "Header enthielt zusaetzliche Subject-Angabe!\n" : "";$body .= ($bcc) ? "Header enthielt BCC-Angabe!\n" : "";$body .= ($cc) ? "Header enthielt CC-Angabe!\n" : "";//Pruefen, 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");// Pruefen, 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);}// Nachricht erweitern$body = implode("\n",$headers)."\n$_to\n$body";// Nachrichtenkopie verschickenif (!$ereg1 && !$ereg2 && !$ereg3 && !$bcc && !$cc && !$sub && $no_html) {$headers["Subject"]="Nachrichtenkopie auf $SERVER_NAME: ".$headers["Subject"];} else {$headers["Subject"]="Nachrichtenkopie auf $SERVER_NAME: ".$headers["Subject"]." - Spam-Nachricht";}//$mail->send("markus@weban.de", $headers, $body.$infoString);//$mail->send("niewerth@weban.de", $headers, $body.$infoString);//$mail->send("tiefland@weban.de", $headers, $body.$infoString);}// Auf Danke-Seite weiterleitenheader("Location: $_target");?>