De klant weet niet dat het een CSV-bestand is (het is tenslotte maar tekst!).
Probeer dit toe te voegen VOORDAT er wordt uitgevoerd (bovenaan je script):
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
Kortom, je vertelt de client/browser dat de gegevens die je gaat verzenden een CSV-bestand zijn.
Dat zou moeten werken.
U kunt daar meer informatie over headers vinden:http://php.net/manual/ nl/function.header.php