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.
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)
Besoin | Possibilités dans Outlook 2019 | Étapes principales |
---|---|---|
Voir l’heure avec les secondes directement dans l’interface | Impossible 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 individuel | Consulter 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) Fichier ▶ Proprié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 messages | Non 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 horaire | L’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
- Ouvrez le message par double‑clic.
- Allez dans Fichier ▶ Propriétés.
- Dans la zone En‑têtes Internet, copiez le texte si nécessaire.
- Recherchez les lignes commençant par
Received:
. Prenez la plus récente (en haut), juste avant la première ligne nonReceived:
. - 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. | Offset | Région (exemples) |
---|---|---|
UTC | +0000 | Temps universel coordonné |
CET | +0100 | Europe centrale (hiver) |
CEST | +0200 | Europe 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
- Ouvrez le centre d’administration, section Flux de courrier ▶ Suivi des messages.
- Choisissez l’intervalle de dates, spécifiez expéditeur/destinataire si besoin.
- 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.
- Dans Outlook, sélectionnez les messages ▶ Fichier > Enregistrer sous… ▶ Format :
Texte brut
(.txt
) ouMessage Outlook
(.msg
), selon vos outils. - Pour
.eml
(depuis d’autres clients) ou.txt
, le contenu est texte : recherchezReceived:
.
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 :
- Ouvrez une session MAPI sur votre profil Outlook.
- Parcourez : Store ▶ Boîte aux lettres ▶ Dossier (ex. Boîte de réception).
- 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
- Dans Outlook, ALT+F11 ▶ éditeur VBA ▶ double‑cliquez ThisOutlookSession ▶ collez le code ▶ enregistrez.
- Fermez/réouvrez Outlook (ou exécutez
Application_Startup
via un redémarrage). - Sélectionnez un ou plusieurs messages ▶ Développeur > Macros ▶ lancez
RemplirPourLesMessagesSélectionnés
.
Ajouter la nouvelle colonne à la vue
- Ouvrez le dossier (ex. Boîte de réception) ▶ Affichage > Paramètres d’affichage ▶ Colonnes….
- Dans Sélectionner les colonnes disponibles, choisissez Champs définis par l’utilisateur dans ce dossier.
- Ajoutez RecuExact (texte) pour l’affichage ; facultatif : ajoutez RecuExactDT pour trier précisément.
- 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 champDate:
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
- Besoin ponctuel (1 message) ? Ouvrez Propriétés ▶ lisez la première ligne
Received:
. - Besoin d’un lot ? Utilisez le message trace (EAC/PowerShell) pour exporter les horodatages à la seconde.
- Besoin d’un affichage permanent dans Outlook ? Déployez le petit VBA ci‑dessus et ajoutez la colonne RecuExact.
- Besoin de forensique bas niveau ? Ouvrez
PR_RECEIVED_TIME
avec MFCMAPI/OutlookSpy. - É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énario | Méthode conseillée | Temps de mise en œuvre | Points forts | Limites |
---|---|---|---|---|
Un seul message, besoin immédiat | En‑tête Internet | Très rapide | Précis à la seconde, sans outil | Manipulation manuelle, pas de tri/filtre |
Plusieurs messages d’un incident | Message Trace (EAC/PowerShell) | Moyen | Export CSV, granularité seconde, côté serveur | Nécessite droits d’administration |
Affichage constant en production | VBA + colonne RecuExact | Moyen | Visible dans la liste, triable (via RecuExactDT) | Macros à maintenir, politique sécurité |
Expertise forensique | MFCMAPI / OutlookSpy | Variable | Accès brut à PR_RECEIVED_TIME | Outils 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.