Comment vérifier le statut des e-mails lus et non lus dans Exchange

Vous avez parfois le doute quant à la lecture de vos e-mails, même avec les accusés de réception activés ? Ou peut-être souhaitez-vous simplement une preuve concrète que vos messages importants ne se perdent pas dans les limbes ? Dans un environnement Exchange, le suivi de la lecture des e-mails n’est pas aussi simple qu’un clic, surtout si vous souhaitez le faire a posteriori ou sans vous fier uniquement aux accusés de réception. Ce guide présente des méthodes pratiques (et parfois un peu rudimentaires) pour vérifier si vos e-mails ont été ouverts, que ce soit sur site ou dans Exchange Online (Microsoft 365).Car, soyons honnêtes, cela fonctionne à peu près correctement sur certaines configurations, et beaucoup moins sur d’autres. Mais bon, connaître quelques commandes et astuces peut vous éviter bien des interrogations : « Ai-je vraiment lu mon e-mail ? »

Comment suivre l’état de lecture des e-mails sur Exchange Server et en ligne

Suivi de l’état de lecture dans un serveur Exchange local

Si vous utilisez un serveur Exchange local, ce n’est pas trop compliqué. Il faut d’abord activer le suivi de lecture des e-mails au niveau de l’organisation. Cela détermine si le serveur enregistre ou non l’ouverture d’un e-mail. Vous pouvez le faire très facilement via PowerShell :

Get-OrganizationConfig | Select ReadTrackingEnabled

Il renvoie « vrai True» ou « faux » False. S’il est désactivé, oui, vous pouvez l’activer ; c’est un peu étrange, mais l’activer vous permet de voir si les messages sont lus dans les journaux :

Set-OrganizationConfig -ReadTrackingEnabled $true

Sur certaines machines, cette commande peut ne pas afficher de résultats immédiatement ou nécessiter un redémarrage du serveur ou une nouvelle connexion. Une fois activée, vos journaux enregistreront l’activité de lecture.

Pour vérifier si un message a été lu, vous aurez besoin de son identifiant. Plutôt que de parcourir des journaux interminables, ouvrez le courriel dans Outlook, cliquez sur Fichier > Propriétés et consultez l’onglet En-têtes Internet. Repérez l’ Message-IDen-tête : c’est sur celui-ci que vous filtrerez vos journaux.

Dans PowerShell, vous pouvez récupérer les statuts de lecture de ce message en filtrant les journaux comme suit :

Get-MessageTrackingLog -Sender [email protected] -MessageID "" -Start (Get-Date).AddDays(-2) | Select-Object Timestamp, Recipients, EventId, MessageSubject, MessageID, Status

Vous obtiendrez ainsi un résultat de type CSV indiquant si le message a été marqué comme lu ou non, en fonction de son statut.

Conseil : Pour un nettoyage ou un rapport complet, vous pouvez rediriger cette sortie vers Export-Csv. Attention : dans certains environnements, les statuts de lecture ne sont pas toujours fiables si le suivi est désactivé ou si la désactivation est appliquée individuellement à différentes boîtes aux lettres. De plus, n’oubliez pas que ces journaux ne sont enregistrés qu’après l’activation du suivi ; ils ne sont donc pas rétroactifs aux messages antérieurs à cette activation.

Et si vous êtes du genre à vouloir tout faire (ou si vous en avez assez des commandes répétitives), voici un script GitHub qui automatise tout ce processus : Get-MessageReadStatusReport.ps1. Il permet de générer un rapport pratique.

Vérification de l’état de lecture dans Exchange Online (Microsoft 365)

Dans le cloud, les choses se compliquent. Microsoft n’a pas vraiment simplifié la vérification a posteriori de l’ouverture d’un e-mail, surtout si les accusés de réception ne sont pas demandés. J’ai néanmoins tenté d’adapter des scripts PowerShell pour Exchange Online. Voici une approche de base :

Get-EXOMailbox -Properties messageTrackingReadStatusEnabled | Select-Object UserPrincipalName, messageTrackingReadStatusEnabled

Cette commande vérifie simplement quelles boîtes aux lettres ont le suivi de l’état de lecture activé, ce qui est pratique pour les vérifications en masse. Cependant, le principal problème est que les outils de suivi des messages les plus récents de Microsoft, comme Get-MessageTrace, sont principalement conçus pour suivre le flux des messages et non pour fournir des confirmations de lecture individuelles. Malheureusement, la commande Get-MessageTraceDetail dans Exchange Online ne fournit pas directement l’état lu/non lu, du moins pas encore. C’est assez frustrant car, à ma connaissance, cette fonctionnalité n’est pas aussi complète que les outils sur site.

En pratique, vous pourriez donc être limité, à moins que l’expéditeur n’ait explicitement demandé un accusé de réception, souvent ignoré ou bloqué par les utilisateurs. Car, bien sûr, Microsoft se doit de compliquer les choses inutilement.

En résumé, bien que la vérification directe des statuts de lecture dans Exchange Online ne soit pas aussi robuste que les configurations sur site, la combiner avec des informations sur le comportement des utilisateurs ou des outils de suivi des e-mails (comme des outils de suivi de lecture tiers ou l’envoi en copie cachée d’une adresse e-mail spéciale) pourrait être la seule solution pour le moment.

Je ne sais pas exactement pourquoi ça fonctionne, mais… activer le suivi de lecture sur les boîtes aux lettres individuelles dans Outlook ou Outlook Web peut parfois aider, mais c’est une procédure manuelle et pas toujours infaillible.

Petit conseil bonus : si ça vous tente, des outils comme Winhance ou des solutions d’emailing tierces peuvent fournir des rapports d’activité plus transparents, notamment pour les campagnes d’emailing en masse. Bref, c’est un tout autre sujet.

J’espère que cela permettra de mieux comprendre comment détecter si les courriels ont réellement été ouverts, malgré toutes ces limitations étranges.