Les clients reçoivent bien leurs confirmations de commande, mais je n’ai jamais reçu un seul e-mail New order, et il n’est pas non plus dans mon dossier spam
La notification administrateur, c’est le domaine de votre boutique qui écrit au domaine de votre boutique. WooCommerce l’envoie en orders@yourstore.com vers un destinataire chez yourstore.com, par PHP sur le serveur web, sans signature DKIM et depuis une IP que votre enregistrement SPF n’autorise pas. Un message non authentifié qui se présente comme un expéditeur interne est traité bien plus durement que le même message arrivant sur un domaine sans lien, et certains fournisseurs le retiennent à la passerelle au lieu de le ranger dans le dossier spam, ce qui explique que vous ne le trouviez nulle part. Le courrier client passe de justesse, le courrier administrateur non.
La solution
Placez un expéditeur SMTP authentifié devant wp_mail(), terminez la vérification de domaine chez le prestataire, publiez les enregistrements de sélecteur DKIM et ajoutez son include à votre unique enregistrement TXT SPF. En attendant, comme solution provisoire, changez le champ Recipient(s) sous WooCommerce > Settings > Emails > New order pour une adresse sur un autre domaine, afin de voir au moins arriver les commandes. Passez ensuite une vraie commande de test vers une adresse de test Unspam, confirmez que la valeur d= de DKIM est le domaine de votre boutique, puis remettez le destinataire d’origine.
Les clients Gmail reçoivent tout. Les clients Outlook et Hotmail ne reçoivent rien du tout, et je ne vois jamais de bounce
Comme PHP remet le message à un serveur de messagerie local et que le journal de WooCommerce consigne seulement qu’il a remis l’e-mail au système de messagerie avec succès, votre journal affiche Sent et il n’y a aucun bounce à lire nulle part.
La solution
Sortez complètement du chemin d’envoi par PHP. Faites passer wp_mail() par un prestataire SMTP authentifié, terminez la vérification de domaine pour que le message porte une signature DKIM sur le domaine de votre boutique, et ajoutez l’include SPF du prestataire. La deuxième chose que le prestataire vous apporte, c’est un suivi des bounces et des suppressions : les abandons silencieux cessent d’être invisibles. Lancez ensuite un test de placement en boîte de réception et confirmez que le message atteint bien une boîte de test Outlook, et pas seulement une boîte Gmail.
Les e-mails de réinitialisation de mot de passe n’arrivent jamais, alors les clients qui ont oublié le leur abandonnent et je perds la vente
Reset password fait partie des notifications listées sous WooCommerce > Settings > Emails, donc elle peut être désactivée comme n’importe quelle autre, et elle emprunte la même route non authentifiée que le reste. C’est aussi la pire à perdre, parce que c’est le seul e-mail que le client attend activement et qu’aucune commande dans votre administration ne vient vous signaler l’échec. Une notification désactivée, un destinataire manquant et un message filtré se ressemblent tous, vus de la boutique.
La solution
Ouvrez WooCommerce > Status > Logs et filtrez sur la source transactional-emails. Disabled signifie que la notification est désactivée sous WooCommerce > Settings > Emails > Reset password, Skipped qu’une condition préalable manquait, un destinataire par exemple, Failed que le service de messagerie a renvoyé une erreur, et Sent que WooCommerce l’a bien remis et qu’il a été filtré en aval. Si rien n’est consigné du tout, regardez d’où la réinitialisation a été demandée : WooCommerce prévient que les e-mails de réinitialisation de mot de passe de WordPress et les autres e-mails d’administration WordPress peuvent ne pas apparaître dans ce journal, et renvoie plutôt aux journaux de votre prestataire SMTP. Corrigez d’abord la route avec un expéditeur SMTP qui signe pour votre domaine, puis retestez en demandant une réinitialisation pour un compte dont l’adresse e-mail est une adresse de test Unspam.
J’ai installé une extension SMTP comme tous les guides le conseillaient, et les e-mails partent toujours dans les spams
SMTP a réglé le problème d’envoi, pas le problème d’identité. Le prestataire relaie désormais votre courrier depuis une IP réputée sous son propre Return-Path, donc SPF passe face au domaine du prestataire. Tant que la vérification de domaine n’est pas terminée, le message est signé en DKIM avec le domaine du prestataire et non avec le vôtre. Votre en-tête From annonce toujours yourstore.com, rien ne s’aligne dessus, et DMARC échoue exactement comme avant, simplement depuis une meilleure infrastructure.
La solution
Dans le tableau de bord du prestataire, vérifiez le domaine plutôt qu’une seule adresse d’expéditeur, et publiez tous les enregistrements DKIM qu’il émet. Envoyez un vrai e-mail de commande vers une adresse de test et lisez la valeur d= de DKIM : si c’est encore le domaine du prestataire, la vérification est incomplète. Gardez un seul enregistrement TXT SPF en y ajoutant l’include du prestataire, par exemple v=spf1 include:_spf.google.com include:sendgrid.net ~all, plutôt que de publier un second enregistrement SPF, ce qui les invalide tous les deux.
Les e-mails de commande arrivent des heures plus tard, parfois seulement le lendemain matin, et le tunnel de commande traînait déjà avant ça
C’est la file des e-mails différés. WooCommerce peut sortir les e-mails transactionnels de la requête de validation de commande pour que le client n’attende pas le serveur de messagerie : c’est la fonctionnalité Deferred emails sous WooCommerce > Settings > Advanced > Features, désactivée par défaut, et du code peut aussi la forcer avec le filtre woocommerce_defer_transactional_emails. La file tourne sur Action Scheduler, et WooCommerce documente Action Scheduler comme reposant sur WP-Cron, lui-même dépendant du trafic du site. Une boutique qui passe une nuit calme n’a aucun visiteur pour déclencher la file, donc le reçu attend le suivant.
La solution
Ouvrez WooCommerce > Status > Scheduled Actions et cherchez les actions en retard ; une pile d’actions vieilles de plus d’un jour le confirme. Le conseil de WooCommerce est de mettre en place une tâche cron côté serveur qui exécute WP-Cron indépendamment et contourne la dépendance au trafic, ce qui règle les délais de toutes les tâches planifiées de la boutique, pas seulement des e-mails. Si le tunnel de commande était déjà lent avant le report, la cause est en général le saut vers le serveur de messagerie effectué à l’intérieur de la requête, et passer à un prestataire SMTP le retire aussi.