Trotzdem nochmal die Frage:
Muss der header unter allen Umständen weiter nach oben vor den Ausgaben oder kann der dann auch da unten stehen bleiben, wenn es so funktioniert? Ich meine..klar könnte er das - aber ist das mehr Glück als Verstand, daß es geht oder macht es nix und kann so bleiben?
Du mußt mal den Unterschied zwischen Code und Ausgabe erkennen.
Alles was zwischen <?php und ?> steht ist erstmal noch keine Ausgabe, das ist einfach der Teil der Datei, der auf dem Server geparsed wird, bevor die Datei an den Client geschickt wird. D.h. solange du nicht mit php explizit Ausgaben erzeugst und solange dein Code so sauber ist, dass keine Fehler oder Notices geschmissen werden, kannst du vor dem header()-Aufruf soviel Code stehen haben wie du willst.
Es dürfen außerhalb des <?php ?> Bereichs vor der Stelle wo header() aufgerufen wird keine Zeichen jeglicher Art stehen, keine html-tags, keine Leerzeichen, keine Leerzeilen.
Das wars.
Bei dir den header() weiter oben zu setzen würde ja auch keinen Sinn machen. Es soll ja erst weitergeleitet werden wenn die email verschickt wurde.