MIME_HEADER_CTYPE_ONLY habe ich nun weg. Reicht leider noch nicht - es landet immer noch SPAM.
Ja das problem ist, dass GMX irgendwie noch vieles anderes reinschreibt wenn ich es bei GMX anschaue.
Das hat keinen Einfluss auf den Spamfilter. Der Filter sitzt gleich am Eingang, den Krimskrams schreibt GMX erst hinterher dazu und sicher auch nur, wenn man's sich im Web anschaut.
Voila hier ist der Code aus GMX. Wenn ich diesen dann mit dem Validator teste wird es mir schwindlig.
Ich musste selbst erstmal genau hinschauen und wundere mich immer noch etwas über die Pingeligkeit des Filters. Sowas …
und dabei neue Leute kennen zu lernen.<br><br>-----------------------------------
… ist in HTML erlaubt, aber nicht in XHTML. Probiere es mit <br />. Der Fehler steckt in folgender Zeile:
$mitteilung .= nl2br($_POST['nachricht'])."<br/>";
Die einfache Lösung wäre, nl2br() durch str_replace("\n", "<br />\n", $_POST['nachricht']) zu ersetzen.
Man könnte natürlich mehrere \n gegen einen Absatz austauschen, wenn's ganz besonders hübsch werden soll. Das wird aber etwas verzwickt, weil zum die \n ersetzenden </p> ja noch das <p> gehört. Falls du mal Langeweile hast …
Davon unabhängig gibt es zwei kritische Sicherheitsaspekte zu beachten: Soweit ich die Funktionalität überblicke, könnte ich momentan im Formularfeld nachricht bösen HTML-Code unterbringen, als E-Mail-Adresse jene meines Opfers, und schon bekommt irgendwer schlimme Post - und du bist der Dumme, der sie verschickt hat.
Du solltest hier unbedingt htmlspecialchars() einsetzen!
$mitteilung .= str_replace("\n", "<br />\n", htmlspecialchars($_POST['nachricht'])) . "<br />";
Eventuell ähnlich kritisch ist das Einfügen des Benutzernamens:
<td width="128" valign="top"><img src="'.$bild.'" alt="'.$row_benutzer->vorname." ".$row_benutzer->name.'" width="100" height="126" /></td>
Das geht zumindest schonmal dann in die Hose, wenn es um Bernhard "Bernie" Geröllheimer geht. Auch hier zumindest:
<td width="128" valign="top"><img src="'.$bild.'" alt="' . htmlspecialchars($row_benutzer->vorname . " " . $row_benutzer->name) . '" width="100" height="126" /></td>