Aller au contenu principal
Making DigitalMaking Digital
Note technique

Formulaire de contact PrestaShop : "Une erreur s'est produite" et comment la corriger

En bref

Quand le formulaire de contact PrestaShop affiche "Une erreur s'est produite", la cause est le plus souvent l'envoi des e-mails de la boutique. Testez Paramètres avancés > E-mail, activez temporairement le mode développement et lisez var/logs. Vérifiez ensuite le modèle du formulaire modifié par le thème, le captcha et la taille des pièces jointes.

Vous remplissez le formulaire de contact de la boutique, vous cliquez sur Envoyer, et PrestaShop répond "Une erreur s'est produite lors de l'envoi de votre message". Aujourd'hui, la cause la plus fréquente est l'envoi des e-mails de la boutique (réglage absent ou mal configuré). Les autres causes sont un modèle de formulaire modifié par le thème, un captcha mal configuré ou une pièce jointe trop lourde. Le plus rapide est d'envoyer un e-mail de test, puis de lire les logs.

Les e-mails de la boutique partent-ils vraiment ?

Ouvrez Paramètres avancés > E-mail. Le formulaire de contact envoie un message à l'adresse du contact choisi par le visiteur : si l'e-mail ne peut pas partir, le visiteur voit l'erreur.

  • Vérifiez la méthode d'envoi. Si elle est sur "Ne jamais envoyer d'e-mails", rien ne part.
  • Préférez vos propres paramètres SMTP (serveur, identifiant, mot de passe, chiffrement) à la fonction mail() du serveur, souvent bloquée ou classée en courrier indésirable.
  • Utilisez Envoyer un e-mail de test en bas de la page. S'il échoue, le problème ne vient pas du formulaire.
  • Activez "Journaliser les e-mails" pour voir dans la liste ce que la boutique a tenté d'envoyer.

Vérifiez aussi l'adresse du destinataire dans Paramètres de la boutique > Contact > Contacts : un contact sans adresse valide fait échouer l'envoi.

Comment voir l'erreur exacte ?

Activez temporairement le mode développement dans config/defines.inc.php, reproduisez l'erreur, puis remettez la valeur d'origine :

PHP
// config/defines.inc.php
define('_PS_MODE_DEV_', true);

Regardez aussi le dossier var/logs/ de la boutique (PrestaShop 1.7, 8 et 9) : il contient le détail des erreurs PHP et de l'envoi. Ne laissez jamais le mode développement actif sur une boutique en production : il affiche des informations internes aux visiteurs.

Le formulaire a-t-il perdu son champ anti-spam ?

Depuis PrestaShop 1.7, le formulaire est fourni par le module contactform (ps_contactform). Si votre thème a remplacé son modèle d'affichage, une mise à jour du module peut ne plus correspondre à ce modèle. Repartez alors du modèle d'origine du module, ou de celui du thème Classic, et reportez vos changements d'affichage un par un.

Sur l'ancienne PrestaShop 1.6, la cause était précise : une protection anti-spam était apparue dans une mise à jour, et un thème sur mesure devait ajouter deux champs dans son fichier contact-form.tpl, juste après <div class="submit"> :

HTML
<input type="text" name="url" value="" class="hidden" />
<input type="hidden" name="contactKey" value="{$contactKey}" />

Ou reprendre le contact-form.tpl du thème default-bootstrap.

Quelles autres causes vérifier ?

  • Un captcha (reCAPTCHA ou module équivalent) dont les clés sont invalides, ou dont le domaine n'est pas déclaré chez Google : le message part sans la preuve attendue et est refusé.
  • Une pièce jointe trop lourde. Les réglages PHP upload_max_filesize et post_max_size limitent la taille du fichier que le visiteur peut joindre.
  • Le cache. Après une modification de thème, videz le cache dans Paramètres avancés > Performances.
  • Un module tiers qui modifie le formulaire : désactivez-le un instant pour confirmer.

Faut-il rester sur PrestaShop 1.6 ?

Non. PrestaShop 1.6 n'est plus maintenue : elle ne reçoit plus de correctifs de sécurité, et chaque module récent la supporte de moins en moins. Si le formulaire de contact casse sur une boutique 1.6, le correctif ci-dessus dépanne, mais la vraie réponse est de planifier une mise à jour. Si la boutique est reliée à un logiciel de gestion ou à un logisticien, connecter vos logiciels peut se faire en même temps.

À retenir
  • Testez d'abord les e-mails : Paramètres avancés > E-mail > e-mail de test.
  • Lisez var/logs/ et le mode développement (temporairement) pour l'erreur exacte.
  • Si le thème surcharge le formulaire, repartez du modèle du module.
  • PrestaShop 1.6 : les champs url et contactKey étaient la cause historique.

Besoin d'un coup de main sur une boutique qui bloque ? Écrivez-nous.

Questions fréquentes

Où le formulaire de contact PrestaShop envoie-t-il les messages ?

À l'adresse du contact choisi dans la liste déroulante du formulaire, réglée dans Paramètres de la boutique > Contact > Contacts.

Le message arrive en courrier indésirable, que faire ?

Utilisez un envoi SMTP authentifié et configurez les enregistrements SPF et DKIM du domaine d'envoi : c'est ce qui évite le classement en spam.

Peut-on tester le formulaire sans spammer le client ?

Oui, en mettant temporairement votre propre adresse comme destinataire du contact "Service client", puis en la remettant ensuite.

Making Digital

Nous connectons les logiciels des PME, automatisons leurs tâches répétitives et créons des assistants IA, depuis 2010. Nos articles partent de nos projets réels.

Notre parcours
Une question sur ce sujet ?

Parlons-en 30 minutes.

Vous saurez si votre problème se règle, comment, et en combien de temps. Sans engagement.