26 Juin 2020

La fonction mail() de PHP ne marche pas sur mon Prestashop

A mon sens, un des problèmes les plus embêtant à résoudre sur un site e-commerce : l’expédition des mails ! Vous avez peut-être créé votre site Prestashop, tout est prêt pour accueillir les clients et là… Après vos tests, vous ne recevez aucun mail depuis votre CMS. D’où vient le problème ? je vous explique dans cet article, comment faire fonctionner la fonction mail() PHP.

C’est quoi la fonction mail() de PHP sur Prestashop ?

Cette fonction permet d’envoyer des mails depuis votre site, à l’aide d’un simple script PHP et d’éviter des réglages avancés pour expédier vos mails (comme l’option via SMTP). Cette option est activée dès l’installation par Prestashop.

Si vous avez beaucoup de trafic, beaucoup de mails à expédier et que vous voulez améliorer la sécurité, il est préférable d’utiliser les paramètres SMTP. Dans le cas contraire, la fonction via PHP fera très bien l’affaire.

Quels mails sont expédiés via la fonction PHP ?

Au final, c’est tous ceux de votre boutique. Du message du formulaire de contact, au mail de confirmation de commande, en passant par le mail de création de compte… Ils sont tous expédié via ce système. Il est donc impératif de tester avant la mise en ligne de votre site que cela fonctionne bien.

En cas de problème, nous allons donc voir comment le résoudre dans la suite de cet article !

Vérifier les logs d’emails dans votre boutique Prestashop

La première étape est de vérifier si votre cms créé un mail lors d’une action sur votre site. Pour cela, il faut se rendre dans paramètres avancés puis dans “email” pour voir la liste des mails envoyés.

Cette liste permet de voir tout ce qui a été expédié depuis votre boutique Prestashop, avec le destinataire, le type de mail utilisé, la langue, l’objet et l’heure d’envoi. Toutes traces de communication avec vos utilisateurs, sont conservées.

En général, ils sont bien présents dans les logs, ce qui n’empêche pas les utilisateurs de ne pas les recevoir.

Voici une liste de mails présente dans les logs

Créer une adresse mail sur votre hébergement

Il est quand même assez rare si vous installez un Prestashop, que cela vienne de la solution. En général, on associe cela à l’hébergement qui ne déclenche pas la fonction mail() de PHP sur le serveur.

Quasiment toutes les offres d’hébergement offrent avec, un droit de création d’adresse e-mail (en moyenne 5).

Dans certains cas, si vous n’avez pas créé d’adresse mail, cela n’activera pas la fonction sur le serveur et donc les mails ne seront pas envoyés !

Rendez-vous sur l’administration de votre hébergement et créez une adresse mail classique : contact@votrenomdedomaine.fr.

Il y a juste à rajouter un mot de passe et le tour est joué.

Créer une adresse mail sur OVHhttps://docs.ovh.com/fr/emails/creation-dune-adresse-e-mail/

Créer une adresse mail sur IONOShttps://www.ionos.fr/assistance/email/mail-basic-setup-configuration-de-base-de-la-messagerie/creer-une-adresse-email-dans-lespace-client/

Créer une adresse mail sur O2Switch https://faq.o2switch.fr/hebergement-mutualise/tutoriels-cpanel/comptes-courriels

J’ai eu le cas il y a peu pour un client qui était chez Ionos avec une offre mutualisée. Après plusieurs contacts avec le support, il fallait créer une adresse pour déclencher la fonction sur l’hébergement.

OVH : La fonction mail PHP de mon Prestashop ne fonctionne pas

Vous avez bien créé votre adresse, vous avez un Prestashop depuis un moment et du jour au lendemain, vous ne recevez plus aucuns mails ? Idem pour les clients de votre Prestashop ?

Votre compte mail est peut-être inactif ou désigné en tant que spam chez OVH !

Je mets mes lunettes et m’assoie sur mon rocking chair pour vous raconter encore une anecdote client :
Un des mes clients ayant une offre mutualisé chez OVH, a expédié 15 mails d’un coup avec des photos (assez lourdes). En retour, que des messages d’erreur d’envoi. J’ai donc fait des recherches et au final, son service d’email était en catégorie “spam” chez OVH et le compte était bloqué.

Si le serveur mutualisé OVH reçoit trop de mail avec des erreurs d’adresses ou s’il y a des expéditions en masse, alors ils bloquent par sécurité le service de mail.

Pour corriger cela, vous devez vérifier l’état de votre script d’email sur l’hébergement et pour le débloquer il suffit de faire un message au support.

 

Voir l’état du service mail dans OVH

Avant de faire le choix de débloquer votre adresse mail, vous pouvez voir d’ou vient le problème à droite sur le bouton e-mails en erreur (voir capture ci-dessus).

Si jamais vous avez un problème de spam, vous pouvez alors identifier l’endroit sur votre site et mettre en place un captcha pour arrêter cela.

O2switch : l’envoi de mail Prestashop ne marche pas

J’ai repris le tutoriel ci-dessous en détail dans un article plus poussé avec notamment la création d’adresse mail sur O2switch, suivez le guide.

Travaillant beaucoup avec cet hébergeur, j’ai été confronté lors d’une mise en ligne d’un site client, d’un problème d’envoi des mails par Prestashop.

Dans mon cas, dans les logs j’avais bien une validation d’expédition des mails. De plus, j’avais créé une adresse mail dans CPANEL mais cela ne changeait rien.

Après plusieurs retours avec le support, nous avons fait fonctionner les mails en activant l’envoi d’email via SMTP :

Voici, ci-dessous, la configuration SMTP utilisé dans le cas de mon client. Vous devez remplacer ce qui est flouté par votre nom de domaine.

Dans la partie serveur, vous devez mettre le nom auquel vous êtes rattaché sur O2Switch. C’est le même nom que l’URL de connexion à votre interface CPANEL.

Si le champ mot de passe est vide, c’est normal. Après enregistrement, Prestashop le masque mais il est bien prit en compte.

Ensuite, vous devez remplacer dans contact > magasin, le mail de votre boutique par :

no-reply@votrenomdedomaine.com.

Et normalement c’est bon.

Si le problème persiste, demandez au support, qui est super et en plus réactif !

Conclusion sur l’expédition des mails en PHP

La plupart du temps cela va donc venir d’une configuration sur votre hébergement. Ils ont l’habitude de ce genre de cas et n’hésitez pas à contacter le support si vous n’arrivez pas à résoudre le problème.

Si vous avez un problème de spam, mettez de suite un captcha, je vous conseil ce module : Captcha mathématique, la méthode la plus simple et efficace

Via un captcha Google : 1.envato.market/vAmLv

Vous ne recevez pas les mails de confirmation de commande ? Voici un article blog pour corriger cela : https://www.matthieu-jalbert.fr/je-ne-recois-plus-les-mails-de-confirmation-de-commande-prestashop/

Vous avez besoin d’aide pour corriger le système de mail() de PHP sur Prestashop ?

– Test de l’expédition de mail
– Vérification de l’état de votre service mail
– Correction ou contact avec l’hébergeur pour correction

Vous pouvez prendre un ticket de support Prestashop pour que j’intervienne directement sur votre boutique en ligne.