Un formulaire de contact est essentiel pour votre site web, mais un problème courant gâche l'expérience : les emails ne arrivent jamais à destination. Parfois c'est une erreur de configuration serveur, parfois c'est le filtre anti-spam du fournisseur qui bloque le message. Résultat : votre client pense avoir envoyé un message, vous pensez n'avoir reçu personne, et une affaire se perd.
Cet article vous montre où chercher pour diagnostiquer et corriger ces problèmes, qu'il s'agisse d'une erreur côté serveur ou d'une mauvaise réputation de votre domaine.
Pourquoi les emails du formulaire disparaissent
Les emails des formulaires de contact peuvent se perdre à deux niveaux :
- Erreur d'envoi côté serveur. Le serveur web ne réussit pas à envoyer l'email. Causes communes : fonction PHP
mail()désactivée, serveur SMTP non configuré, identifiants d'authentification incorrects, pare-feu qui bloque le port SMTP. - Le message arrive, mais atterrit au mauvais endroit. L'email est envoyé mais le fournisseur de messagerie du destinataire le classe en Spam ou Promotions. Cause : domaine de l'expéditeur non authentifié (SPF/DKIM/DMARC manquants), réputation du serveur dégradée, ou filtres trop stricts chez Orange, Free ou SFR.
La majorité des pertes se situent au niveau 1 : configuration serveur incomplète. Mais si vous pensez avoir résolu ce problème, c'est presque toujours le niveau 2 qui pose souci.
Les erreurs côté serveur (sendmail, PHP mail, SMTP)
Si votre formulaire ne génère aucun email reçu, c'est généralement une erreur d'envoi. Voici les causes les plus fréquentes :
- PHP
mail()sans SMTP externe. Par défaut, PHP utilise la fonctionmail()qui appelle le programmesendmaildu serveur. Si aucun serveur mail (postfix, sendmail) n'est configuré, les emails s'envolent dans le néant. Solution : utiliser un relais SMTP externe (Brevo, Mailjet, Gmail). - Les plugins WordPress/Elementor qui oublient SMTP. Contact Form 7 et Elementor Forms utilisent
wp_mail()qui par défaut envoie parsendmail. Sans plugin SMTP (WP Mail SMTP) et configuration d'un relais, les messages se perdent silencieusement. - Paramètres SMTP incorrects. Mauvais serveur, port fermé, identifiants faux, chiffrement (TLS/SSL) désactivé.
- Adresse From invalide. Si l'adresse From ne correspond pas au domaine, la plupart des fournisseurs SMTP refusent d'envoyer.
Pour vérifier : regardez les logs serveur (Apache, Nginx, PHP-FPM) et cherchez les messages SMTP ou sendmail errors. Un message « command not found » ou « connection refused » révèle immédiatement le souci.
Les filtres des fournisseurs d'email en France
Même si votre email part correctement, Orange, Free, SFR, Gmail ou Hotmail peuvent le bloquer. Les principaux fournisseurs français utilisent des moteurs anti-spam qui se fient à plusieurs signaux :
- Domaine non authentifié. Sans SPF, DKIM ou DMARC, les filtres français classent le message comme suspect.
- Contenu suspect. Orange et Free filtrent agressivement certains mots clés. Si votre email de confirmation contient « offre » ou « clic », il peut atterrir en Spam.
- Réputation de l'IP. Si votre serveur utilise une IP réputée mauvaise (ancien spam), les emails sont rejetés.
- Apple Mail et iCloud : Privacy Relay. Si la personne utilise Hide My Email, elle ne recevra jamais le message de confirmation.
Configuration SPF, DKIM et DMARC sur votre domaine
Ces trois protocoles d'authentification sont aujourd'hui quasi obligatoires pour une bonne délivrabilité. Ils fonctionnent ensemble :
- SPF (Sender Policy Framework). Un enregistrement DNS qui dit « les emails de ce domaine peuvent être envoyés depuis ces serveurs mail ». À configurer dans votre zone DNS chez votre registrar.
- DKIM (DomainKeys Identified Mail). Chaque email est signé cryptographiquement. Le destinataire vérifie la signature et empêche la falsification du From.
- DMARC (Domain-based Message Authentication). Une politique qui dit « si SPF ou DKIM échouent, mets le message en quarantaine ».
Si vous utilisez un ESP français (Brevo, Mailjet, Sarbacane), ils vous proposent des enregistrements SPF/DKIM/DMARC pré-remplis à copier dans votre DNS. C'est l'approche la plus simple pour WordPress ou PrestaShop.
Comment tester la délivrabilité d'un formulaire
Ne devinez pas : testez. Voici la démarche :
- Vérifiez les logs du serveur. Cherchez les messages SMTP ou sendmail errors. Les logs Apache et Nginx peuvent aussi révéler des erreurs lors de la soumission.
- Testez depuis plusieurs fournisseurs. Utilisez un service de test gratuit qui évalue votre email auprès de 20+ fournisseurs (Orange, Free, SFR, La Poste, Gmail, Outlook, Yahoo, iCloud). Vous verrez immédiatement où il atterrit.
- Vérifiez vos enregistrements DNS. Confirmez que SPF, DKIM et DMARC sont valides et visibles en ligne.
- Testez avec du contenu réaliste. Simulez un email de confirmation complet avec votre branding, pas juste un test minimaliste.
Solutions pratiques pour améliorer la réception
Voici ce qu'il faut faire maintenant :
- Si vous êtes sur WordPress/WooCommerce/PrestaShop. Installez un plugin SMTP (WP Mail SMTP, Easy WP SMTP) et connectez-le à Brevo, Mailjet ou Gmail. Ces fournisseurs gèrent SPF/DKIM pour vous.
- Si vous hébergez votre propre formulaire. Configurez Postfix correctement, ou utilisez un relais SMTP externe (Brevo, Mailjet proposent des plans abordables).
- Configurez SPF/DKIM/DMARC sur votre domaine. Demandez à votre hébergeur, ou copy-paste les enregistrements fournis par votre ESP dans votre zone DNS.
- Nettoyez votre liste de contacts. Supprimez les adresses invalides. Envoyer à des adresses non-existent dégrade votre réputation.
- Testez régulièrement. Chaque trimestre, soumettez un test pour vérifier que rien ne s'est dégradé.
Pourquoi mon formulaire dit « message envoyé » alors que je n'ai rien reçu ?
Dois-je toujours configurer SPF, DKIM et DMARC ?
Peut-on remplacer sendmail par un ESP pour un formulaire de contact ?
mail(), vous utilisez l'API ou le SMTP d'un ESP français comme Brevo ou Mailjet. Vous gagnez en fiabilité, en suivi des bounces, et en délivrabilité. La plupart proposent un plan gratuit pour débuter.