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 :
// 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"> :
<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_filesizeetpost_max_sizelimitent 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.
- 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
urletcontactKeyé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.