| 1 |
lars |
1 |
<?php
|
|
|
2 |
// $Id: mail.php 28 2007-09-28 12:28:21Z tiefland $
|
|
|
3 |
|
|
|
4 |
//Variablen initialisieren
|
|
|
5 |
$headers = array();
|
|
|
6 |
$email = (isset($_POST["email"])) ? $_POST["email"] : "info@weban.de";
|
|
|
7 |
|
|
|
8 |
// Existiert ein Email Schutz?
|
|
|
9 |
if (eregi("[a-z0-9]{32}",$_POST["_to"])) {
|
|
|
10 |
// Ja, dann ueberpruefe ob Konfiguration existiert
|
|
|
11 |
if (file_exists('emailconfig.default.inc.php')) {
|
|
|
12 |
include('emailconfig.default.inc.php');
|
|
|
13 |
}
|
|
|
14 |
// Existiert auch diese Adresse
|
|
|
15 |
if ($GLOBALS['email_config'][$_POST["_from"]]) {
|
|
|
16 |
|
|
|
17 |
$_from = $GLOBALS['email_config'][$_POST["_from"]];
|
|
|
18 |
$_to = $GLOBALS['email_config'][$_POST["_to"]];
|
|
|
19 |
$recipient = $GLOBALS['email_config'][$_POST["recipient"]];
|
|
|
20 |
|
|
|
21 |
if (eregi("[a-z0-9]{32}",$_POST["_subject"])) {
|
|
|
22 |
$_subject = "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];
|
|
|
23 |
$subject = "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];
|
|
|
24 |
} else {
|
|
|
25 |
if ($_POST["_subject"]) {
|
|
|
26 |
$_subject = $_POST["_subject"];
|
|
|
27 |
$subject = $_POST["_subject"];
|
|
|
28 |
} else {
|
|
|
29 |
$_subject = "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];
|
|
|
30 |
$subject = "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];
|
|
|
31 |
}
|
|
|
32 |
}
|
|
|
33 |
|
|
|
34 |
} else {
|
|
|
35 |
die("Sie haben einen Fehlehaften Code uebergeben.<br>");
|
|
|
36 |
}
|
|
|
37 |
|
|
|
38 |
} else {
|
|
|
39 |
$_from = (isset($_POST["_from"])) ? $_POST["_from"] : $email;
|
|
|
40 |
$_to = (isset($_POST["_to"])) ? $_POST["_to"] : $email;
|
|
|
41 |
$recipient = (isset($_POST["recipient"])) ? $_POST["recipient"] : $email;
|
|
|
42 |
$_subject = (isset($_POST["_subject"])) ? $_POST["_subject"] : "";
|
|
|
43 |
$subject = (isset($_POST["subject"])) ? $_POST["subject"] : "";
|
|
|
44 |
}
|
|
|
45 |
|
|
|
46 |
$_target = (isset($_POST["_target"])) ? $_POST["_target"] : "";
|
|
|
47 |
$redirect = (isset($_POST["redirect"])) ? $_POST["redirect"] : "";
|
|
|
48 |
$submit = false;
|
|
|
49 |
$cc = false;
|
|
|
50 |
$bcc = false;
|
|
|
51 |
$sub = false;
|
|
|
52 |
$ref = $_SERVER["HTTP_REFERER"];
|
|
|
53 |
$start = strpos ($ref, "//");
|
|
|
54 |
|
|
|
55 |
// Referrer überprüfen
|
|
|
56 |
if ($start < 0) {
|
|
|
57 |
$start = 0;
|
|
|
58 |
} else {
|
|
|
59 |
$start = $start + 2;
|
|
|
60 |
}
|
|
|
61 |
$stop = strpos ($ref, "/", $start);
|
|
|
62 |
|
|
|
63 |
// Variable $_POST auf "submit" als Array-Key überprüfen
|
|
|
64 |
// falls nicht gefunden ==> ENDE
|
|
|
65 |
|
|
|
66 |
/* foreach ($_POST as $key => $value)
|
|
|
67 |
{
|
|
|
68 |
if (strtolower($key)=="submit")
|
|
|
69 |
{
|
|
|
70 |
$submit=true;
|
|
|
71 |
}
|
|
|
72 |
}
|
|
|
73 |
|
|
|
74 |
if (substr ($ref, $start, $stop-$start) != $_SERVER["SERVER_NAME"]||!$submit)
|
|
|
75 |
*/
|
|
|
76 |
|
|
|
77 |
if (substr ($ref, $start, $stop-$start) != $_SERVER["SERVER_NAME"]) {
|
|
|
78 |
exit;
|
|
|
79 |
}
|
|
|
80 |
|
|
|
81 |
//Body zusammenbauen
|
|
|
82 |
foreach(array_keys($_POST) as $elem) {
|
|
|
83 |
if ($elem[0] == "_") {
|
|
|
84 |
unset($_POST[$elem]);
|
|
|
85 |
} else {
|
|
|
86 |
if (is_array($_POST[$elem])) {
|
|
|
87 |
$_POST[$elem] = implode($_POST[$elem],", ");
|
|
|
88 |
}
|
|
|
89 |
$_POST[$elem] = $elem.": ".$_POST[$elem];
|
|
|
90 |
}
|
|
|
91 |
}
|
|
|
92 |
$body=implode($_POST,"\n");
|
|
|
93 |
|
|
|
94 |
// TO Adresse ermitteln
|
|
|
95 |
if (!$_to) {
|
|
|
96 |
$_to = $recipient;
|
|
|
97 |
}
|
|
|
98 |
if (!$_subject) {
|
|
|
99 |
$_subject = $subject;
|
|
|
100 |
}
|
|
|
101 |
|
|
|
102 |
// FROM Adresse ermitteln
|
|
|
103 |
if (!$_from) {
|
|
|
104 |
if ($email) {
|
|
|
105 |
$_from = $email;
|
|
|
106 |
} else {
|
|
|
107 |
$_from = $_to;
|
|
|
108 |
}
|
|
|
109 |
}
|
|
|
110 |
|
|
|
111 |
// Weiterleitungsziel ermitteln
|
|
|
112 |
if (!$_target) {
|
|
|
113 |
if ($redirect) {
|
|
|
114 |
$_target = $redirect;
|
|
|
115 |
} else {
|
|
|
116 |
$_target = "danke.htm?ref=".urlencode($ref);
|
|
|
117 |
}
|
|
|
118 |
} else {
|
|
|
119 |
$_target = dirname($ref)."/".$_target;
|
|
|
120 |
}
|
|
|
121 |
|
|
|
122 |
// Header überpruefen (muessen leer sein)
|
|
|
123 |
if (count($headers)) {
|
|
|
124 |
//Header wurde manipuliert!
|
|
|
125 |
$keys=array("cc","cC","Cc","CC");
|
|
|
126 |
foreach($keys as $key) {
|
|
|
127 |
if (isset($headers[$key])) {
|
|
|
128 |
unset($headers[$key]);
|
|
|
129 |
$cc=true;
|
|
|
130 |
}
|
|
|
131 |
if (isset($headers["b".$key])) {
|
|
|
132 |
unset($headers["b".$key]);
|
|
|
133 |
$bcc=true;
|
|
|
134 |
}
|
|
|
135 |
if (isset($headers["B".$key])) {
|
|
|
136 |
unset($headers["B".$key]);
|
|
|
137 |
$bcc=true;
|
|
|
138 |
}
|
|
|
139 |
}
|
|
|
140 |
}
|
|
|
141 |
|
|
|
142 |
// erweiterte Infos erstellen
|
|
|
143 |
$linkInfo = readlink ( $_SERVER["SCRIPT_FILENAME"] );
|
|
|
144 |
$infoString = "PHP_SELF: " . $_SERVER["PHP_SELF"] ."\n";
|
|
|
145 |
$infoString .= "SCRIPT_NAME: " . $_SERVER["SCRIPT_NAME"] ."\n";
|
|
|
146 |
$infoString .= "REQUEST_URI: " . $_SERVER["REQUEST_URI"] ."\n";
|
|
|
147 |
$infoString .= "SCRIPT_FILENAME: " . $_SERVER["SCRIPT_FILENAME"] ."\n";
|
|
|
148 |
$infoString .= "HTTP_REFERER: " . $_SERVER["HTTP_REFERER"] ."\n";
|
|
|
149 |
$infoString .= "REMOTE_ADDR: " . $_SERVER["REMOTE_ADDR"] ."\n";
|
|
|
150 |
$infoString .= "SYM_LINK_INFO: " . $linkInfo ."\n";
|
|
|
151 |
$infoString .= "EMPFAENGER: " . $_to ."\n";
|
|
|
152 |
|
|
|
153 |
$infoString = "\n\n=============================================\n\n"
|
|
|
154 |
. $infoString
|
|
|
155 |
. "\n=============================================\n";
|
|
|
156 |
|
|
|
157 |
// ende erweiterte Infos
|
|
|
158 |
|
|
|
159 |
// Verschiedene Variablen ueberpruefen, ob "TO: BCC: CC: oder FROM: Eintraege vorkommen
|
|
|
160 |
$ereg1 = eregi("/(from\:)|(to\:)|(cc\:)|(bcc\:)/", $_to);
|
|
|
161 |
$ereg2 = eregi("/(from\:)|(to\:)|(cc\:)|(bcc\:)/", $body);
|
|
|
162 |
$ereg3 = eregi("/(from\:)|(to\:)|(cc\:)|(bcc\:)/", $_subject);
|
|
|
163 |
|
|
|
164 |
// Eventuell vorhandenes "SUBJECT"-Feld im Header löschen
|
|
|
165 |
foreach($headers as $header => $value) {
|
|
|
166 |
if (strtolower($headers)=="subject") {
|
|
|
167 |
unset($headers[$header]);
|
|
|
168 |
$sub=true;
|
|
|
169 |
}
|
|
|
170 |
}
|
|
|
171 |
|
|
|
172 |
//Body erweitern, falls manipulierte Werte gefunden wurden!
|
|
|
173 |
$body .= ($ereg1) ? "To enthielt zusaetzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n" : "";
|
|
|
174 |
$body .= ($ereg2) ? "Body enthielt zusaetzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n" : "";
|
|
|
175 |
$body .= ($ereg3) ? "Subject enthielt zusaetzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n" : "";
|
|
|
176 |
$body .= ($sub) ? "Header enthielt zusaetzliche Subject-Angabe!\n" : "";
|
|
|
177 |
$body .= ($bcc) ? "Header enthielt BCC-Angabe!\n" : "";
|
|
|
178 |
$body .= ($cc) ? "Header enthielt CC-Angabe!\n" : "";
|
|
|
179 |
|
|
|
180 |
//Pruefen, ob kein HTML in Nachricht vorkommt
|
|
|
181 |
$no_html=($body==strip_tags($body));
|
|
|
182 |
|
|
|
183 |
// Header-Array zusammenbauen
|
|
|
184 |
$headers["From"] = $_from;
|
|
|
185 |
$headers["Subject"] = $_subject;
|
|
|
186 |
|
|
|
187 |
// PEAR-Klasse "Mail" einbinden und "mail"-Objekt erstellen
|
|
|
188 |
require_once("Mail.php");
|
|
|
189 |
$mail=Mail::factory("mail");
|
|
|
190 |
|
|
|
191 |
// Pruefen, ob kein Fehler aufgetreten ist
|
|
|
192 |
if (!PEAR::isError($mail)) {
|
|
|
193 |
// Wenn alles OK ist
|
|
|
194 |
if (!$ereg1 && !$ereg2 && !$ereg3 && !$bcc && !$cc && !$sub && $no_html) {
|
|
|
195 |
//Mail verschicken
|
|
|
196 |
$mail->send($_to, $headers, $body);
|
|
|
197 |
}
|
|
|
198 |
|
|
|
199 |
// Nachricht erweitern
|
|
|
200 |
$body = implode("\n",$headers)."\n$_to\n$body";
|
|
|
201 |
|
|
|
202 |
// Nachrichtenkopie verschicken
|
|
|
203 |
if (!$ereg1 && !$ereg2 && !$ereg3 && !$bcc && !$cc && !$sub && $no_html) {
|
|
|
204 |
$headers["Subject"]="Nachrichtenkopie auf $SERVER_NAME: ".$headers["Subject"];
|
|
|
205 |
} else {
|
|
|
206 |
$headers["Subject"]="Nachrichtenkopie auf $SERVER_NAME: ".$headers["Subject"]." - Spam-Nachricht";
|
|
|
207 |
}
|
|
|
208 |
|
|
|
209 |
//$mail->send("markus@weban.de", $headers, $body.$infoString);
|
|
|
210 |
//$mail->send("niewerth@weban.de", $headers, $body.$infoString);
|
|
|
211 |
//$mail->send("tiefland@weban.de", $headers, $body.$infoString);
|
|
|
212 |
}
|
|
|
213 |
|
|
|
214 |
// Auf Danke-Seite weiterleiten
|
|
|
215 |
header("Location: $_target");
|
|
|
216 |
?>
|