« Could not instantiate mail function » : WordPress n’arrive pas à envoyer d’e-mail

Fiche du décodeur d'erreurs, mise à jour le 12 octobre 2026

GênantEnvoi des e-mails
Le message affiché
Could not instantiate mail function.
Autres formulations du même message 2
  • Mailer Error: Could not instantiate mail function.
  • Impossible d’instancier la fonction mail.

WordPress confie ses e-mails à PHPMailer, une bibliothèque qui utilise par défaut la fonction mail() de PHP. Ce message signifie que mail() a échoué : le serveur n’a pas accepté de prendre l’e-mail en charge. Le contenu du message n’est pas en cause, c’est le moyen d’envoi lui-même qui fait défaut.

Pourquoi cette erreur apparaît

  • L’hébergement n’autorise pas la fonction mail(), ou aucun programme d’envoi (sendmail) n’est installé, par exemple sur un serveur local ou un VPS sans messagerie.
  • L’adresse d’expédition n’appartient pas au domaine du site et le serveur refuse de l’utiliser.
  • Le quota d’envoi de l’hébergement mutualisé est atteint.
  • Une adresse de destinataire ou un en-tête mal formé, souvent saisi dans un formulaire, fait échouer l’appel.

Comment corriger le problème

Vérifier l’adresse d’expédition

Dans les réglages de votre formulaire ou de WooCommerce, l’adresse d’expédition doit utiliser le domaine du site, par exemple contact@exemple.fr, et non une adresse Gmail ou Outlook. Corrigez-la puis faites un nouvel essai.

Interroger l’hébergeur

Demandez au support si la fonction mail() est active sur votre offre et si un quota d’envoi a été atteint. Certains hébergeurs la coupent volontairement et imposent l’envoi par SMTP.

Passer à l’envoi par SMTP

Installez une extension SMTP reconnue (WP Mail SMTP, FluentSMTP, Post SMTP) et reliez-la à une boîte e-mail de votre domaine ou à un service d’envoi transactionnel. L’e-mail ne dépend plus de mail() mais d’une connexion authentifiée, plus fiable et mieux acceptée par les messageries.

Envoyer un e-mail de test

Ces extensions proposent toutes un envoi de test, avec un journal détaillé en cas d’échec. Une fois le test réussi, vérifiez vos vrais formulaires et les e-mails de commande.

Contrôler PHP sur un serveur géré

Sur un serveur que vous administrez, vérifiez que mail ne figure pas dans la directive disable_functions de php.ini (retirez-le seul, sans toucher aux autres fonctions) et que sendmail_path pointe vers un programme d’envoi installé. Le journal du serveur de messagerie, souvent /var/log/mail.log, explique ensuite chaque refus.

sendmail_path = /usr/sbin/sendmail -t -i

Notez vos réglages d’envoi avant d’installer une extension SMTP, et n’en activez qu’une seule à la fois pour éviter qu’elles se contredisent.

Un autre message d'erreur ? Collez-le dans le décodeur : il le reconnaît et vous oriente vers la bonne fiche.

Ouvrir le décodeur