Outlook 2019 : afficher l’heure exacte de réception (secondes) d’un e‑mail – méthodes et pas‑à‑pas

Vous cherchez l’heure exacte (hh:mm:ss) d’arrivée d’un e‑mail dans Outlook 2019 ? Voici des méthodes concrètes : lecture des en‑têtes, extraction par lot (Exchange/PowerShell), et une solution VBA pour afficher les secondes dans une colonne personnalisée.

Sommaire

Pourquoi l’interface d’Outlook 2019 n’affiche pas les secondes

Outlook 2019 privilégie la lisibilité dans le volet de lecture et la liste des messages : l’horodatage visible dans le champ Reçu est limité aux heures et minutes. Il n’existe pas, par défaut, de format de colonne permettant d’ajouter « :ss ». Pourtant, les secondes existent bel et bien dans les métadonnées du message — elles sont stockées par le serveur et accessibles via l’en‑tête Internet ou la propriété MAPI PR_RECEIVED_TIME. Cela signifie que vous pouvez récupérer l’heure exacte même si vous ne pouvez pas l’afficher nativement dans la liste.

Réponses & solutions (vue d’ensemble)

BesoinPossibilités dans Outlook 2019Étapes principales
Voir l’heure avec les secondes directement dans l’interfaceImpossible nativement : aucun format de colonne n’affiche les secondes via Affichage > Paramètres d’affichage > Format des colonnes.
Connaître l’heure exacte pour un message individuelConsulter l’en‑tête Internet : les lignes Received: ou Date: contiennent l’heure complète (hh:mm:ss + fuseau).1) Double‑cliquez sur le message.
2) FichierPropriétés (ou Fichier > Informations > Propriétés).
3) Dans En‑têtes Internet, repérez la ligne Received: la plus proche du haut.
Afficher les secondes dans le champ Reçu / liste de messagesNon prévu ; il faut un complément tiers ou un script VBA lisant PR_RECEIVED_TIME et alimentant une colonne personnalisée.
Obtenir l’heure précise pour plusieurs messages (audit, reporting)Exporter en .msg/.eml et lire les métadonnées ; utiliser MFCMAPI ou OutlookSpy pour extraire PR_RECEIVED_TIME ; interroger Exchange/Microsoft 365 (suivi des messages, journaux).Selon l’outil choisi, suivre les étapes détaillées plus bas.
Exactitude & fuseau horaireL’heure en en‑tête est horodatée par le serveur ; elle peut différer du fuseau défini dans Windows/Outlook/locataire Microsoft 365.Vérifiez Fichier > Options > Calendrier > Fuseaux horaires et, si besoin, les paramètres du locataire M365.

Méthode 1 — Obtenir l’heure exacte pour un message sans complément : l’en‑tête Internet

Chaque e‑mail transporte un bloc d’en‑têtes techniques. Les lignes Received: sont ajoutées par chaque serveur traversé ; l’horodatage inclut les secondes et le fuseau. Pour connaître l’instant de remise dans votre boîte, utilisez la ligne Received: la plus proche du haut qui correspond au serveur destinataire final.

Pas‑à‑pas

  1. Ouvrez le message par double‑clic.
  2. Allez dans FichierPropriétés.
  3. Dans la zone En‑têtes Internet, copiez le texte si nécessaire.
  4. Recherchez les lignes commençant par Received:. Prenez la plus récente (en haut), juste avant la première ligne non Received:.
  5. Relevez l’horodatage au format jour, dd Mon yyyy hh:mm:ss ±HHMM (ex. Tue, 07 Oct 2025 14:23:59 +0200).

Exemple d’en‑têtes annoté

Received: from edge.mail.example (edge.mail.example [203.0.113.15])
        by mail.your-org.tld with ESMTPS id XYZ123
        for <vous@votre-domaine.tld>;
        Tue, 07 Oct 2025 14:23:59 +0200  <— Remise dans VOTRE boîte (référence principale)
Received: from relay.example.net (relay.example.net [198.51.100.7])
        by edge.mail.example with ESMTPS id ABC987;
        Tue, 07 Oct 2025 14:23:57 +0200
Date: Tue, 07 Oct 2025 14:23:55 +0200                    <— Date déclarée par l’expéditeur (peut être fausse)
Message-ID: <abcdef123456@example.net>

Important : ne confondez pas Date: (déclarée par le client expéditeur et potentiellement erronée) avec la ligne Received: ajoutée par le serveur de destination, qui fait foi pour la réception réelle.

Convertir le fuseau horaire

Si l’horodatage montre +0000 (UTC) ou un offset différent de votre poste, convertissez‑le. Dans Windows/Outlook, vérifiez : Fichier > Options > Calendrier > Fuseaux horaires. Quelques repères :

Abbr.OffsetRégion (exemples)
UTC+0000Temps universel coordonné
CET+0100Europe centrale (hiver)
CEST+0200Europe centrale (été)

Les transitions d’heure d’été/hiver peuvent créer des décalages d’une heure ; basez‑vous toujours sur l’offset explicite ±HHMM imprimé dans l’en‑tête.

Méthode 2 — Extraire l’heure exacte pour un grand nombre de messages (audit, conformité, dépannage)

Pour traiter des dizaines/centaines de messages ou documenter un incident, trois approches robustes :

Option A : Exchange Online / Exchange Server — suivi des messages

Le suivi des messages (message trace) apporte un horodatage à la seconde pour le parcours des e‑mails dans le service. Vous pouvez utiliser le Centre d’administration Exchange (EAC) ou PowerShell.

Via l’EAC

  1. Ouvrez le centre d’administration, section Flux de courrierSuivi des messages.
  2. Choisissez l’intervalle de dates, spécifiez expéditeur/destinataire si besoin.
  3. Lancez la recherche ; les résultats indiquent les événements (remise, spam, remise différée) avec l’heure précise.

Via PowerShell

Exemples pour Exchange Online :

# Connexion (nécessite les droits appropriés)
Connect-ExchangeOnline

# Rechercher par message-id (extrait de l’en-tête Internet)

$mid = "<[abcdef123456@example.net](mailto:abcdef123456@example.net)>"
Get-MessageTrace -MessageId $mid -StartDate "2025-10-07T00:00:00Z" -EndDate "2025-10-08T00:00:00Z" |
Select-Object Received, SenderAddress, RecipientAddress, Subject

# Détails du parcours pour un destinataire

Get-MessageTraceDetail -MessageTraceId (Get-MessageTrace -MessageId $mid -StartDate "2025-10-07" -EndDate "2025-10-08").MessageTraceId |
Select-Object Date, Event, Action, Detail 

Les horodatages renvoyés par le service sont généralement en UTC. Pour les afficher dans l’heure locale de votre poste :

Get-MessageTrace -MessageId $mid -StartDate "2025-10-07" -EndDate "2025-10-08" |
    Select-Object *,
        @{Name="ReceivedLocal"; Expression = { [DateTimeOffset]::SpecifyKind($_.Received, 'Utc').ToLocalTime() }}

Option B : Fichiers .eml/.msg — lecture des en‑têtes hors Outlook

Pour un audit ponctuel, exportez une sélection de messages et parsez la ligne Received: la plus haute dans chaque fichier.

  1. Dans Outlook, sélectionnez les messages ▶ Fichier > Enregistrer sous…Format : Texte brut (.txt) ou Message Outlook (.msg), selon vos outils.
  2. Pour .eml (depuis d’autres clients) ou .txt, le contenu est texte : recherchez Received:.

Exemple PowerShell (lecture d’une date dans l’en‑tête et conversion UTC → local) :

$file = "C:\Audit\Mail\exemple.eml"
$raw  = Get-Content -Path $file -Raw
# Capture la première ligne Received: (en haut)
$match = [regex]::Matches($raw, "(?m)^Received:.*;\s*(.+)$")
if ($match.Count -gt 0) {
    $stamp = $match[0].Groups[1].Value.Trim()
    $dto   = [DateTimeOffset]::Parse($stamp)
    $local = $dto.ToLocalTime()
    $local.ToString("yyyy-MM-dd HH:mm:ss zzz")
}

Astuce : la première Received: en haut reflète la remise la plus proche du destinataire. Selon l’outil d’export, vous devrez peut‑être « déplier » les en‑têtes sur plusieurs lignes (folded headers).

Option C : Outils MAPI (MFCMAPI, OutlookSpy)

Ces utilitaires exposent directement les propriétés bas niveau d’un message. La propriété qui nous intéresse est PR_RECEIVED_TIME (Date/Heure, précision seconde). Procédure abrégée :

  1. Ouvrez une session MAPI sur votre profil Outlook.
  2. Parcourez : Store ▶ Boîte aux lettres ▶ Dossier (ex. Boîte de réception).
  3. Double‑cliquez sur le message ▶ affichez les propriétés ▶ localisez PR_RECEIVED_TIME.

Prudence : n’écrivez/modifiez rien si vous n’êtes pas sûr de vous ; utilisez ces outils en lecture seule pour l’audit.

Méthode 3 — Afficher les secondes dans une colonne personnalisée (VBA)

Outlook ne sait pas formater nativement la colonne Reçu avec des secondes, mais il est possible de créer une colonne personnalisée alimentée par un script. L’idée : à l’arrivée de chaque e‑mail (ou à la demande), le script lit MailItem.ReceivedTime et stocke :

  • un champ utilisateur RecuExactDT (type Date/Heure) pour le tri et le filtrage ;
  • un champ utilisateur RecuExact (type Texte) formaté yyyy-MM-dd HH:mm:ss pour l’affichage.

Pré‑requis

  • Activer l’onglet Développeur et autoriser les macros (Centre de gestion de la confidentialité).
  • Idéalement, signer numériquement votre projet VBA.

Code VBA complet (à coller dans ThisOutlookSession)

' ---------------------------------------------
' Outlook 2019 — Colonne "Reçu (secondes)"
' Alimente deux champs utilisateur :
'   RecuExactDT (Date/Heure) et RecuExact (Texte)
' ---------------------------------------------
Option Explicit

Private WithEvents InboxItems As Outlook.Items

Private Sub Application_Startup()
Dim ns As Outlook.NameSpace
Dim inbox As Outlook.Folder
Set ns = Application.GetNamespace("MAPI")
Set inbox = ns.GetDefaultFolder(olFolderInbox)
Set InboxItems = inbox.Items
End Sub

' Alimente automatiquement à l'arrivée d'un message
Private Sub InboxItems_ItemAdd(ByVal Item As Object)
On Error Resume Next
WriteRecvExact Item
End Sub

' Applique aux éléments sélectionnés (exécution manuelle)
Public Sub RemplirPourLesMessagesSélectionnés()
Dim sel As Outlook.Selection
Dim i As Long
Set sel = Application.ActiveExplorer.Selection
For i = 1 To sel.Count
WriteRecvExact sel.Item(i)
Next i
MsgBox "Horodatage (secondes) mis à jour pour " & sel.Count & " message(s).", vbInformation
End Sub

' Routine centrale
Private Sub WriteRecvExact(ByVal Item As Object)
If TypeOf Item Is Outlook.MailItem Then
Dim mi As Outlook.MailItem
Dim upDT As Outlook.UserProperty
Dim upTxt As Outlook.UserProperty
Set mi = Item

```
    ' Champ Date/Heure pour tri/filtre
    Set upDT = mi.UserProperties.Add("RecuExactDT", olDateTime, True)
    upDT.Value = mi.ReceivedTime

    ' Champ texte formaté pour affichage
    Set upTxt = mi.UserProperties.Add("RecuExact", olText, True)
    upTxt.Value = Format$(mi.ReceivedTime, "yyyy-mm-dd hh:nn:ss")

    mi.Save
End If
```

End Sub 

Installation & test

  1. Dans Outlook, ALT+F11 ▶ éditeur VBA ▶ double‑cliquez ThisOutlookSession ▶ collez le code ▶ enregistrez.
  2. Fermez/réouvrez Outlook (ou exécutez Application_Startup via un redémarrage).
  3. Sélectionnez un ou plusieurs messages ▶ Développeur > Macros ▶ lancez RemplirPourLesMessagesSélectionnés.

Ajouter la nouvelle colonne à la vue

  1. Ouvrez le dossier (ex. Boîte de réception) ▶ Affichage > Paramètres d’affichageColonnes….
  2. Dans Sélectionner les colonnes disponibles, choisissez Champs définis par l’utilisateur dans ce dossier.
  3. Ajoutez RecuExact (texte) pour l’affichage ; facultatif : ajoutez RecuExactDT pour trier précisément.
  4. Validez ; la colonne montre désormais yyyy‑MM‑dd HH:mm:ss.

Remarques :

  • Le script ne modifie pas la propriété système ReceivedTime ; il copie sa valeur dans un champ utilisateur lisible et triable.
  • Pour qu’un message entrant reçoive automatiquement le champ, laissez le code actif (évènement ItemAdd).
  • Dans certains environnements verrouillés, les macros sont interdites ; privilégiez alors le message trace ou l’export d’en‑têtes.

Exactitude, fuseaux et cas particuliers

  • Source d’autorité : préférez la ligne Received: du serveur de destination final pour dater la réception. Le champ Date: peut être décalé (horloge expéditeur fausse, fraude, décalage de fuseau).
  • PR_RECEIVED_TIME : propriété MAPI (type date/heure) enregistrée à la remise dans la boîte du destinataire. Elle conserve la précision à la seconde.
  • Fuseau : les en‑têtes indiquent l’offset (ex. +0200). Outlook affiche selon le fuseau Windows de la session. Vérifiez vos paramètres si vous constatez une différence d’une heure (DST).
  • Copies/Imports : l’import de fichiers .eml/.msg ou la migration peut conserver l’en‑tête mais réévaluer certains champs. Vérifiez avec MFCMAPI pour un audit fidèle.
  • IMAP/POP : selon les serveurs, la date « Reçu » peut refléter l’instant de dépôt sur le serveur de réception et non l’arrivée côté client.

Diagnostic : check‑list rapide

  1. Besoin ponctuel (1 message) ? Ouvrez Propriétés ▶ lisez la première ligne Received:.
  2. Besoin d’un lot ? Utilisez le message trace (EAC/PowerShell) pour exporter les horodatages à la seconde.
  3. Besoin d’un affichage permanent dans Outlook ? Déployez le petit VBA ci‑dessus et ajoutez la colonne RecuExact.
  4. Besoin de forensique bas niveau ? Ouvrez PR_RECEIVED_TIME avec MFCMAPI/OutlookSpy.
  5. Écart observé ? Comparez fuseaux Windows/Outlook/locataire, et vérifiez si l’heure d’été était active à la date concernée.

Foire aux questions

Puis‑je changer l’horodatage de réception ?

Non. ReceivedTime/PR_RECEIVED_TIME sont des propriétés système définies par le serveur. Vous pouvez seulement lire et copier cette valeur dans un champ utilisateur pour l’affichage.

Pourquoi l’en‑tête montre « :59 » et ma vue « :00 » ?

La vue standard arrondit à la minute. L’en‑tête et PR_RECEIVED_TIME conservent les secondes. Utilisez l’une des méthodes ci‑dessus pour les voir.

Quelle ligne Received: choisir ?

Celle immédiatement au‑dessus des autres en‑têtes non Received: (la plus récente, en haut). Elle correspond au dernier serveur ayant remis le message à votre boîte. Les lignes plus basses décrivent les serveurs traversés en amont.

Et si l’heure doit être opposable (juridique/conformité) ?

Conservez l’e‑mail original, exportez l’en‑tête complet et, si possible, extrayez également les traces côté serveur (message trace/journaux). Cette combinaison offre une piste d’audit robuste et datée à la seconde.

Tableau récapitulatif : quelle méthode pour quel usage ?

ScénarioMéthode conseilléeTemps de mise en œuvrePoints fortsLimites
Un seul message, besoin immédiatEn‑tête InternetTrès rapidePrécis à la seconde, sans outilManipulation manuelle, pas de tri/filtre
Plusieurs messages d’un incidentMessage Trace (EAC/PowerShell)MoyenExport CSV, granularité seconde, côté serveurNécessite droits d’administration
Affichage constant en productionVBA + colonne RecuExactMoyenVisible dans la liste, triable (via RecuExactDT)Macros à maintenir, politique sécurité
Expertise forensiqueMFCMAPI / OutlookSpyVariableAccès brut à PR_RECEIVED_TIMEOutils puissants, manipulations délicates

Bonnes pratiques & conseils

  • Documentez vos procédures internes : qui peut exécuter un message trace, où archiver les exports, comment citer l’offset.
  • Standardisez le format d’horodatage dans vos rapports : yyyy‑MM‑dd HH:mm:ss zzz (ex. 2025‑10‑07 14:23:59 +02:00).
  • Contrôlez les horloges : serveur, passerelles, postes. Une dérive NTP introduit des incohérences visibles dans les en‑têtes.
  • Protégez vos macros : signez‑les et stockez le code en référentiel. Sur les postes non autorisés, privilégiez les méthodes serveur.
  • Tracez le fuseau dans chaque capture : en‑tête (offset) + horodatage local dans le rapport → lecture univoque.

Conclusion

Dans Outlook 2019, l’heure « à la seconde » existe mais n’est pas exposée dans l’interface par défaut. Pour un message isolé, l’en‑tête Internet suffit et fournit la vérité du serveur. Pour des besoins récurrents ou volumineux, misez sur le suivi des messages côté Exchange, qui délivre des horodatages précis, exportables et opposables. Enfin, si vos équipes réclament un affichage immédiat des secondes dans la liste, un petit script VBA ajoute une colonne personnalisée fiable, sans toucher aux propriétés système. En combinant ces approches, vous couvrez l’ensemble des cas : consultation express, audit rigoureux, et visibilité opérationnelle.

À retenir : seconds‑level = en‑têtes Internet, PR_RECEIVED_TIME, Get‑MessageTrace, ou colonne personnalisée via VBA. Choisissez l’outil en fonction du besoin : ponctuel, massif, ou permanent.

Sommaire