A ver, ¿cómo verificas que vengan datos en $_POST?
Que quites y muevas cosas no va a corregir el problema por arte de magia, se trata de entender primero y después pensar en una solución.
Pero no depuras nada bien, sólo mueves cosas al azar y no obtienes más información que "la misma salida", ¿y se ocurre un error y jamás te enteras?
Vamos, quita todas las @ y si puedes imprime el $body completo para que veas que lleva.
Abre la consola de desarrollo de tu navegador e inspecciona la petición del fomulario al servidor ¿vienen ahí los datos o no?
¿Será que la plantilla que envía el formulario lo hace empleando AJAX?
¿Y no tendrás que configurar algo ahí?
Adivinar es imposible.