$koerper = str_replace("Ä","Ä",$koerper);
Das ist Mist. Es wird ja keine HTML-Mail verschickt. Das Ersetzen hätte zur Folge, daß die HTML-Maskierungen in der Mail stehen würden.
Mir scheint es so, als würde die Mail im US-ASCII-Format, also mit 7Bit-Encoding verschickt. Das hat dann natürlich zur Folge, daß alle Zeichen überhalb 127 verloren gehen, also auch alle Umlaute.
Ich würde als erstes mal versuchen, das Content-Transfer-Encoding auf 8 Bit zu setzen. Das geht, indem man der mail()-Funktion zusätzliche Header mitgibt.
$headers.= "Content-type: text/plain; charset=iso-8859-1\r\n";
$headers.= "Content-Transfer-Encoding: 8bit\r\n";
Und wenn das nicht funktionieren sollte, dann versuche es mal so:
$headers.= "MIME-Version: 1.0\r\n";
$headers.= "Content-type: text/plain; charset=iso-8859-1\r\n";
Gruß, rob