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