echo $begrüßung;
Unklar ist mir braucht der Mailheader nun Zeilenumbrüche oder nicht?
Die einzelnen Zeilen des Mailheaders müssen mit Zeilenumbrüchen getrennt sein. Header und Body werden durch zwei Zeilenumbrüche getrennt.
"Sämtliche Informationen, die in den E-Mail-Header gelangen werden (wie z.B. Absender oder Betreff) benötigen keine Zeilenumbrüche."
Deutlicher formuliert: Informationen, die als Wert in eine E-Mail-Header-Zeile gelangen sollen, benötigen keine Zeilenumbrüche (jedenfalls nicht im Normalfall).
Durch den Zeilenumbruch würde der Rest als neue Header-Zeile betrachtet werden. Das gilt es zu vermeiden.
$header .= "From: "Mir" < "Ich@beiMir.de>\n";
$header .= "Reply-To: "zumir"\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-type: text/plain; charset=iso-8859-1\n";
> Brauche ich den Zeilenumbruch?
Ja, zwischen den Zeilen, nicht in den Werten. Wenn du allerdings beispielsweise einen benutzereingegebenen Namen in die From-Zeile einbauen willst, und du stellst fest, dass bereits in der Eingabe ein Zeilenumbruch enthalten ist, dann ist das vermutlich ein Angriffsversuch. Besonders dann, wenn sich das Eingabefeld üblicherweise einzeilig verhält.
Vermutlich wird dich auch noch jemand darauf hinweisen wollen, dass die Headerzeilen eigentlich mit \r\n abzutrennen sind. Das ist aber unter PHP nicht nötig und unter bestimmten Systemkonstellationen sogar ungünstig (siehe Handbuchseitenhinweise zur Funktion mail()). PHP selbst fügt als Trennzeichen zwischen Header und Body nur einfache \n ein. Ein Mail-Transfer-Agent muss also auch damit klarkommen. Demzufolge kann man selbst ruhigen Gewissens auch nur \n verwenden. Wenn der MTA nicht damit klar kommt, scheitert er ja spätestens bei der Header-Body-Trennung. Außerdem ist der MTA des Betriebssystems dafür verantwortlich, betriebssystemübliche Trennzeichen in normgerechte/kontextgerechte umzuwandeln.
echo "$verabschiedung $name";