Documentation MevvMail

Envoyez l’e-mail, puis soyez en mesure de le prouver.

MevvMail reprend wp_mail() à son compte, envoie par les connexions que vous configurez, réessaie ce qui échoue et consigne chaque tentative dans une table de votre propre base de données. Ce guide couvre l’installation, l’écran des connexions champ par champ, l’ordre dans lequel la chaîne est parcourue, le journal, l’encart de commande WooCommerce, les écrans Pro et ce qu’il faut vérifier quand un message n’arrive pas.

Ce qu’il fait

WordPress confie chaque e-mail à la fonction mail() du serveur lui-même, qui n’est pas authentifiée. Les boîtes mail traitent ce courrier comme suspect, et lorsqu’il est refusé personne n’en est informé : wp_mail() renvoie false, la page poursuit son chemin, et la réinitialisation de mot de passe ou la confirmation de commande a tout simplement disparu.

MevvMail remplace ce chemin. Il envoie par une connexion authentifiée que vous configurez, parcourt une liste de connexions par ordre de priorité jusqu’à ce que l’une accepte le message, réessaie celles qui échouent, et affiche l’état de livraison d’une commande WooCommerce directement sur l’écran de commande.

À utiliser quand
Votre boutique envoie des e-mails de commande, de compte ou de facture et vous devez pouvoir répondre à « est-il parti ? » avec un enregistrement plutôt qu’avec une supposition.
Il ne change rien tant que vous ne l’avez pas configuré
Sans connexion définie, le filtre rend l’envoi directement à WordPress. Activer l’extension ne reprend jamais en silence un chemin de messagerie qui fonctionne.
Ce n’est pas un service d’envoi
MevvMail ne revend pas d’envoi et n’a aucun quota propre. Vous apportez votre propre serveur SMTP ou votre propre compte fournisseur, et l’extension l’utilise.

Prérequis : WordPress 6.0 ou plus récent et PHP 8.1 ou plus récent. WooCommerce est facultatif — sans lui tout fonctionne à l’identique, seul l’encart de commande est absent.

Installation

  1. Installez l’extension gratuite MevvMail : téléversez le zip via Extensions → Ajouter, ou copiez le dossier mevvmail dans /wp-content/plugins/.
  2. Activez-la. Rien n’est encore repris.
  3. Ouvrez MevvMail → Connexions et ajoutez votre première connexion.
  4. Appuyez sur Envoyer un e-mail de test et vérifiez que le message arrive.
  5. Facultatif mais recommandé : ajoutez une deuxième connexion de priorité inférieure comme secours.
  6. Uniquement si vous voulez les écrans Pro : installez MevvMail Pro comme deuxième extension et activez votre licence MEVM sous MevvMail → Licence.

Gardez l’extension gratuite active quand Pro est installé. La livraison, la bascule et le journal résident dans l’extension gratuite : une licence expirée n’empêche donc jamais votre boutique d’envoyer des e-mails.

Connexions

Une connexion est une voie de sortie de votre site. Dix types sont disponibles et tous se trouvent dans l’extension gratuite : aucune fonctionnalité retenue, aucune limite d’envoi imposée par nous.

SMTPPHP mail()BrevoSendGridMailgunPostmarkSparkPostElastic EmailSMTP2GOResend

Les champs de l’écran

Nom
L’étiquette que vous donnez vous-même à la connexion. C’est ce que le journal affiche dans la colonne Connexion : donnez-lui donc un nom que vous reconnaîtrez à trois heures du matin.
Fournisseur
Choisissez le type. Le reste du formulaire change avec lui : SMTP demande un hôte, un port, un chiffrement et des identifiants, tandis qu’un fournisseur par API demande une clé et, pour Mailgun et SparkPost, une région.
Priorité
Un nombre. La chaîne est parcourue depuis la priorité la plus basse vers le haut : votre connexion principale reçoit donc le plus petit nombre, et le secours un plus grand.
Nom d’expéditeur et adresse d’expéditeur
L’expéditeur sous lequel le message part. Utilisez une adresse sur un domaine dont les enregistrements SPF, DKIM et DMARC désignent le fournisseur par lequel vous envoyez, sinon la boîte mail restera méfiante envers un courrier pourtant parfaitement livré.
Forcer cet expéditeur sur chaque e-mail
Désactivé par défaut. Une fois activé, cette connexion remplace l’expéditeur que portait le message, quel qu’il soit. Utile quand une extension envoie sous une adresse que votre fournisseur n’autorise pas ; nuisible si vous comptez réellement sur un expéditeur différent par extension.
Actif
Une connexion inactive est ignorée par la chaîne et reste affichée à l’écran. C’est ainsi que vous mettez un fournisseur hors service sans perdre ses réglages.

Les secrets enregistrés ne sont jamais réimprimés dans le formulaire. Les champs mot de passe et clé API affichent « Enregistré — laissez vide pour le conserver » : ne saisissez une valeur que si vous la remplacez.

Testez-la avant de lui faire confiance

Envoyer un e-mail de test envoie un vrai message par cette seule connexion et écrit le résultat dans le journal comme n’importe quel autre envoi. En cas d’échec, le journal porte la réponse du fournisseur lui-même — c’est presque toujours la phrase qui vous dit ce qui ne va pas.

La chaîne, et ce qui se passe quand elle échoue

Quand WordPress produit un e-mail, MevvMail parcourt vos connexions par ordre de priorité et s’arrête à la première qui accepte le message. Un fournisseur qui limite le débit, dont le quota est épuisé ou qui est hors service vous coûte une tentative, pas l’e-mail. Le parcours entier est consigné comme une seule entrée de journal, et non une par connexion : un seul e-mail ne doit pas se lire comme trois échecs distincts.

Quand toutes les connexions ont refusé, l’entrée est consignée comme échouée et mise en file pour un réessai. Elle est réessayée trois fois de plus — après une minute, cinq minutes et trente minutes — puis cela s’arrête. Une adresse qui n’existe pas ne se mettra pas à exister à la quarantième tentative.

Les réessais sont planifiés avec WP-Cron, qui ne s’exécute que lorsque quelqu’un visite le site. Sur un site peu fréquenté, un réessai peut avoir lieu plus tard que la minute pour laquelle il était planifié. Si cela compte pour vous, passez à un vrai cron serveur de la manière habituelle — DISABLE_WP_CRON dans wp-config.php plus un appel à wp-cron.php depuis crontab. Rien n’a besoin d’être modifié dans MevvMail pour cela.

Une chaîne qui en vaut la peine

  • Deux connexions chez deux fournisseurs différents vous protègent du mauvais jour d’un fournisseur. Deux connexions chez le même fournisseur, non.
  • Gardez une connexion SMTP dans la chaîne, sinon les e-mails portant des pièces jointes n’ont nulle part où aller (voir plus bas).
  • PHP mail() est un dernier recours raisonnable mais un mauvais premier choix : c’est justement le chemin non authentifié que l’extension existe pour remplacer.

Le journal des e-mails

Chaque tentative est consignée dans une table de votre propre base de données. Rien de votre e-mail ne nous est envoyé — il n’y a ni télémétrie, ni analytique, ni analyse de contenu nulle part dans l’extension.

Ce qui est consigné
L’heure, les destinataires, l’objet, l’état, la connexion qui s’en est chargée, la partie du site qui l’a produit, la réponse du fournisseur lui-même et le nombre de tentatives.
Filtres
Par état (envoyé, échoué, en attente), par source et par date. À eux trois, ils constituent d’ordinaire toute une enquête d’assistance.
Source
Un message peut porter une étiquette indiquant quelle extension l’a produit — un formulaire, un e-mail de récupération, une notification WooCommerce. L’étiquette est consignée dans sa propre colonne et retirée du message avant son départ : elle n’atteint donc jamais la personne qui reçoit l’e-mail.
Renvoyer
Toute entrée peut être renvoyée depuis la liste. Elle repasse par la chaîne depuis le début : une connexion réparée entre-temps est donc utilisée.
Conserver le corps de l’e-mail
Activé par défaut. Désactivez-le et le journal ne garde que les en-têtes. Une telle entrée peut alors être consultée mais pas renvoyée — et un envoi qui échoue n’est pas non plus mis en file pour l’échelle de réessais, car dans les deux cas rien n’a été conservé à envoyer.
Conserver les entrées du journal pendant
7, 30, 90 jours ou indéfiniment. Les entrées plus anciennes sont supprimées de façon planifiée.

Le journal peut contenir des données personnelles — adresses, objets et, si vous laissez le réglage activé, le corps des messages. Avant la mise en production, examinez la durée de conservation et l’option de corps au regard de vos propres obligations, comme vous le feriez pour tout autre enregistrement de la boutique.

Désinstallation

Supprimer l’extension ne touche ni à votre journal ni à vos réglages. Il y a une seule case à cocher sur l’écran Réglages — Supprimer aussi la table du journal et tous les réglages quand l’extension est supprimée — et elle est désactivée par défaut, car la lecture destructrice de « désinstaller » ne devrait jamais être celle qu’on obtient par accident.

Pièces jointes

Dans la version 1.0.0, les pièces jointes ne circulent que par SMTP. Les huit fournisseurs par API ne les envoient pas, et c’est une limite délibérée plutôt qu’un défaut : chacune de ces API veut un fichier sous une forme différente, et livrer huit encodeurs à moitié testés n’en valait pas la peine.

  • Un e-mail portant un fichier ignore définitivement les connexions par API et cherche une connexion SMTP dans la chaîne.
  • Avec une connexion SMTP configurée, les factures, les billets et les PDF partent normalement.
  • Sans connexion SMTP configurée, un tel e-mail est consigné comme échoué plutôt que livré sans son fichier — une livraison silencieuse sans la facture serait pire qu’un échec visible.

La règle pratique tient en une ligne : gardez une connexion SMTP dans la chaîne, quoi qu’il y ait d’autre dedans.

Commandes WooCommerce

Avec WooCommerce actif, chaque écran de commande reçoit un encart listant les e-mails que cette commande a produits et l’état de livraison de chacun. La question « le client a-t-il reçu la confirmation ? » se répond sur la commande plutôt qu’en fouillant un journal.

Le journal consigne aussi de quel e-mail WooCommerce il s’agissait : un réessai qui a lieu une demi-heure plus tard sait donc toujours ce qu’il envoie — et, avec une licence Pro, quelle règle de routage et quel objet s’y appliquent.

MevvMail fonctionne exactement de la même façon sur un site sans WooCommerce. L’encart de commande n’est simplement pas là.

Ce qu’ajoute une licence Pro

Tout ce qui précède est dans l’extension gratuite : dix types de connexion, la chaîne de bascule, l’échelle de réessais, le journal, le renvoi et l’encart de commande WooCommerce. Pro est une extension distincte qui ajoute de la profondeur WooCommerce par-dessus la livraison.

Concepteur d’e-mails WooCommerce
Un logo, une couleur principale, une couleur de fond, un texte de pied de page et un objet par type d’e-mail, avec un aperçu du design enregistré. Le design est appliqué par l’extension gratuite : il survit donc à l’extinction de la licence.
Suivi des ouvertures
Un pixel 1×1 facultatif servi par votre propre site, consigné comme un unique horodatage dans la colonne Ouvert du journal. Désactivé par défaut. Aucune adresse IP, aucun client de messagerie, aucun référent, aucune localisation, aucun appareil ni aucun nombre d’ouvertures n’est collecté, et aucun taux d’ouverture n’est affiché nulle part.
Alertes d’échec
Un e-mail ou un webhook par panne, après un nombre d’échecs consécutifs que vous choisissez. L’alerte part par le chemin de messagerie du serveur lui-même — elle peut donc encore vous atteindre quand ce sont vos connexions qui sont en panne — et elle ne porte ni destinataire, ni objet, ni corps du message échoué.
Routage conditionnel
Des règles portant sur l’étiquette de source ou sur le type d’e-mail WooCommerce placent une connexion en tête de la chaîne. La chaîne n’est jamais rétrécie : la bascule continue donc de fonctionner, et la règle correspond encore lors d’un réessai différé.

La licence s’active sous MevvMail → Licence avec une clé commençant par MEVM. Si elle expire, le concepteur, le suivi, les alertes et le routage s’arrêtent ; la livraison, la bascule et le journal continuent, car ce n’a jamais été à Pro de les retenir.

Le suivi des ouvertures est un indice, pas une mesure. Une boîte mail qui bloque les images ou un proxy qui les met en cache rend le pixel muet ou prématuré. C’est pourquoi seule la première ouverture est conservée, et pourquoi le produit n’affiche aucun taux d’ouverture.

Ce qui quitte votre serveur

Deux choses, et toutes deux sont listées ici.

  1. Votre e-mail, vers le fournisseur que vous avez configuré. L’expéditeur, les destinataires, l’objet, le corps, l’éventuel Reply-To et les en-têtes personnalisés, ainsi que votre propre clé API pour que le fournisseur puisse vous authentifier. MevvMail n’ajoute rien — pas d’adresse de site, pas de données d’utilisateur, aucun identifiant à nous — et rien n’est envoyé à aucun fournisseur tant que vous n’avez pas créé une connexion de ce type.
  2. Une vérification de mise à jour. Deux valeurs, l’identifiant de l’extension et le numéro de version installé, envoyées à https://mevvsoft.com/api/v1/license/free-update quand WordPress lance sa propre vérification de mise à jour et que la réponse en cache date de plus de douze heures. Pas d’adresse de site, pas d’adresse e-mail, pas de clé de licence, pas de liste d’extensions, pas de statistiques d’utilisation. La réponse est signée et une réponse non signée est rejetée. La copie distribuée par le répertoire des extensions WordPress ne contient pas du tout le fichier de mise à jour.

L’éditeur ne reçoit de cette extension aucun contenu d’e-mail, aucune adresse de destinataire, aucun enregistrement de journal et aucune donnée analytique. Le journal est une table de votre propre base de données, et vous décidez combien de temps il est conservé et si le corps des messages est conservé ou non.

Dépannage

Le journal dit envoyé, mais ce n’est pas arrivé
« Envoyé » signifie que la connexion a accepté le message, pas que la boîte mail l’a rangé dans la boîte de réception. Regardez les indésirables, puis vérifiez que l’adresse d’expéditeur est sur un domaine dont les enregistrements SPF, DKIM et DMARC autorisent le fournisseur par lequel vous envoyez. La plus grande partie du courrier qui disparaît à ce stade relève de l’authentification, pas de la livraison.
Tout échoue sur la première connexion
Ouvrez l’entrée et lisez la réponse du fournisseur lui-même : elle est stockée avec la tentative. Un mauvais port et un mauvais chiffrement, une clé expirée et un expéditeur que le fournisseur n’autorise pas expliquent la plupart des cas.
Un e-mail avec pièce jointe a échoué
Vérifiez si votre chaîne contient une connexion SMTP. Sans elle, un e-mail portant un fichier est consigné comme échoué à dessein.
Les réessais n’ont jamais lieu
Deux causes. WP-Cron ne s’exécute que lorsque quelqu’un visite le site : sur un site peu fréquenté, le réessai attend donc le trafic — ou passez à un vrai cron serveur. L’autre est « Conserver le corps de l’e-mail » : désactivé, il ne reste rien avec quoi réessayer, et l’entrée échouée est laissée telle quelle à dessein.
Le bouton Renvoyer n’a rien fait
Cette entrée a été consignée sans son corps : il n’y a donc rien à envoyer. Réactivez « Conserver le corps de l’e-mail » pour les entrées que vous pourriez vouloir renvoyer.
Les écrans Pro sont absents
Vérifiez que l’extension gratuite est active, que l’extension Pro est active et que la licence est activée. Les trois sont nécessaires, et l’écran de licence indique laquelle n’est pas satisfaite.

Quand vous nous écrivez, envoyez les versions des extensions, les versions de WordPress et de PHP, le type de connexion et le texte exact de la réponse du fournisseur figurant dans l’entrée du journal. Retirez d’abord les adresses des clients et le corps du message ; la réponse suffit presque toujours à elle seule.