echo $begrüßung;
Beispielsweise als nicht richtig. Wenn mail() nicht von selbst die Header mit einer Leerzeile abschließen würde, wäre es fehlerhaft.
Hm, wie kommt es dann zu Header-Injections?
So wie bereits gesagt. Jemand sendet in einem Feld, das letzten Endes im Header landet (also To, Subject oder ein Extra-Header-Wert), statt eines umbruchlosen Strings einen mehrzeiligen und der Script-Autor prüft das nicht, weil er es einfach nicht erwartet hat: "Ist ja nur ein einzeiliges Eingabefeld".
Du erkennst sicherlich auch, dass message (dritter Parameter) ein Extra-\n bekommt …
Das erkenne ich zwar, aber nicht warum. Was bewirkt er?
Er fügt die Leerzeile zwischen den Headern und Message ein.
echo "$verabschiedung $name";