Lo más probable es que su displayWinesList() la función hace eco de sus datos en lugar de devolverlos.
Puede modificar su función para devolver los datos o dejarla como está y usar el almacenamiento en búfer de salida para capturar los datos:
$to = "example@sqldat.com";
$subject = "WineStore Query";
ob_start();
displayWinesList($connection, $query,$region_name, $wine_type, $price);
$message = ob_get_clean();
$message = '<html>'.$message.'</html>';
$from = "example@sqldat.com";
…
Sin embargo, para estar seguro, publique su displayWinesList() función.