Alcune note:
Se a fine script non c'è altro, ovvero sei a fine pagina e non ci sono tag HTML non terminare lo script con ?> che è il tag di chiusura di PHP e si può omettere se appunto non c'è bisogno di aggungere altro.
// verifico che tutti i campi siano stati compilati if (!$email) { echo 'Tutti i campi del modulo sono obbligatori!'; }Queste validazioni falle in javascript perché miglori la UX dell'utente, se un campo è sbagliato devi aggiungere una nota subito prima che venga inviato il form, facendole in PHP il feedback ce l'hai solo dopo il submit e non prima.
Quel form non è per nulla sicuro, never trust user input, se è tutto li lo script allora sanitizza subito:
$email = \filter_var( $_POST['email'], FILTER_SANITIZE_EMAIL ); $url = \filter_var( $_POST['url'], FILTER_SANITIZE_URL );Poi $msg non è definita
Poi si potrebbe continuare migliorando quello script e renderlo più leggibile per esempio evitando tutti gli else che complicano la lettura e introducendo string template e printf(), però prima vediamo di farlo funzionare.