echo $begrüßung;
[...] Zeilenumbrüche erfolgen nur durch \n.
Und genau da könnte der Hund begraben sein.
Hast Du es schon mit \r\n probiert?
Das wäre nämlich die Standard-Schreibweise gemäss
http://www.php.net/manual/de/function.mail.php
Wenn man die eigenen Header mit \r\n trennt, kommt unter Unix beim MTA (sendmail und Co.) definitiv ein Mischmasch aus \n und \r\n an, denn die Funktion mail() trennt die restlichen Header und den Body mit \n. (Siehe http://cvs.php.net/viewvc.cgi/php-src/ext/standard/mail.c?annotate=1.97 ab Zeile 235). Wenn du auf die Idee kommst, an die Werte für To, Subject und die letzte Header-Zeile noch ein \r anzufügen hast du immer noch nicht durchgängig \r\n drinstehen, denn dem \n\n zur Header-Body-Trennung kannst du nur dem ersten Zeichen ein \r vorschieben.
Und sonst könntest Du mal versuchen, nur eine Header-Zeile
nach dem anderen hinzuzufügen, angefangen mit From:,
und zu schauen, welche Header-Zeile das Problem verursacht.
Ja, was anderes als Try'n'Error fällt mir auch nicht ein. Höchstens noch die üblichen Hinweise: Fehler zur Fehlersuche nicht unterdrücken (@ weglassen), Rückgabewerte der Funktionen auswerten (zumindest mit var_dump()anzeigen lassen), Kontrollausgaben der beteiligten Werte mit var_dump(). Und noch ein Hinweise: Umlaute im Betreff sind _nicht_ durch die charset-Angabe der Content-Type-Zeile abgedeckt.
echo "$verabschiedung $name";