Résoudre les problèmes

Erreur « An error occurred while sending the message » dans le formulaire de contact de PrestaShop

Vérifié le 3 min de lecture formulaires erreurs PrestaShop

Le message An error occurred while sending the message, please try again. indique que le module contactform a rejeté l'envoi, mais n'en identifie pas à lui seul la cause. Dans les versions actuelles, il peut apparaître si le champ piège url contient des données, si le jeton manque, ne correspond pas à la session ou a expiré.

Ouvrez une nouvelle copie du formulaire et faites un seul test en examinant la requête dans l'onglet Réseau / Network des outils du navigateur. Vérifiez si url et token sont envoyés, et notez la version de PrestaShop, du module contactform et du thème. Certaines versions du module fixent une expiration de 600 secondes : un onglet resté ouvert plus longtemps peut donc aussi échouer.

Si la requête ne contient pas ces champs, comparez le modèle du module avec l'override actif du thème :

/themes/Nombre_Tema/modules/contactform/views/templates/widget/contactform.tpl

La solution à privilégier est de mettre à jour le thème ou de demander au développeur un override compatible avec la version installée de contactform. Seulement si vous avez confirmé que l'override est ancien et que les champs manquent, ajoutez le bloc équivalent à celui du modèle officiel avant le bouton d'envoi :

<style>
  input[name=url] {
    display: none !important;
  }
</style>
<input type="text" name="url" value="" />
<input type="hidden" name="token" value="{$token|escape:'htmlall':'UTF-8'}" />

Videz le cache de PrestaShop et refaites l'envoi depuis une page fraîchement chargée. Si les champs étaient déjà présents, ne modifiez pas le modèle : examinez la réponse exacte, les cookies et les journaux de l'application avant d'attribuer l'échec au thème.

Consultez le modèle officiel du module contactform correspondant à la version installée.

Cache, session et distribution

Vérifiez qu'un cache de page ou un CDN ne réutilise pas le formulaire avec le jeton d'une autre session ou un jeton expiré. Testez depuis une page fraîchement chargée et conservez les cookies pendant l'envoi ; ne supprimez ni la validation du jeton ni le champ piège pour forcer l'acceptation.

Le bloc présenté ne fonctionne que si cette version du module fournit la variable token au modèle. Comparez avec l'étiquette de la version installée, pas seulement avec la branche dev du dépôt. Une fois le formulaire accepté, vérifiez aussi la destination du message : passer la validation ne garantit pas que le SMTP le distribue.

Cela peut aussi vous aider

Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.