Idéalement, tu ne devrais pas préciser un smtp dans ton code, car le jour où ton site web déménage, ça te fait une bricole de plus à te rappeler et donc une remarque négative sur la migration car on l'oublie forcément
ensuite, les politiques antispam sont souvent basées sur "cette ip est-elle utilisée par un de mes clients ?"
si le smtp que tu as fourni à PHPMailer vérifie que l'ip qui envoie le mail est bien sous sa coupe et que ce n'est pas le cas, il est facilement explicable pourquoi l'envoi n'aboutit pas. Par contre si tu as indiqué smtp.free.fr, on peut raisonnablement s'attendre à ce que free (FAI) ne bloque pas free (Hébergeur) dans l'envoi de messages. donc si ce dernier te renvoie des erreurs c'est parce qu'il te manque un petit paramètre ici ou là. Je suis pas très versée en PHP mais si tu montres un bout du code, un œil neuf peut éventuellement voir ce qui va pas.