Décodeur MIME

Collez la source complète d'un e-mail - en-têtes et corps - et voyez-la décomposée : chaque en-tête, la structure MIME, l'encodage de transfert et le charset de chaque partie, le corps text/HTML décodé et toutes les pièces jointes. Tout fonctionne dans votre navigateur ; rien n'est envoyé.

Résultat :
Collez un e-mail brut ci-dessus et appuyez sur « Décoder le message ». Astuce : dans la plupart des clients de messagerie, utilisez « Afficher l'original » / « Afficher la source », ou enregistrez le message en fichier .eml, pour obtenir le texte brut.

Qu'est-ce qu'un décodeur MIME, et que signifient tous ces en-têtes ?

Chaque e-mail que vous recevez est, en dessous, un document en texte brut qui suit une structure stricte définie par MIME (Multipurpose Internet Mail Extensions) et l’ancien format de message RFC 5322. Lorsque vous ouvrez la “source brute” ou un fichier .eml enregistré, cette structure devient visible : un bloc d’en-têtes, une ligne vide, puis le corps. Ce décodeur découpe tout message que vous collez en ces morceaux — en-têtes, arbre MIME, encodage de transfert et charset de chaque partie, le text/HTML décodé et chaque pièce jointe — entièrement dans votre navigateur. Rien n’est envoyé à un serveur ; l’analyse s’exécute sur votre propre ordinateur.

1. La forme générale d’un message

Un message comporte deux sections séparées par la première ligne vide :

Header-Name: valeur de l’en-tête Another-Header: autre valeur (ligne de continuation repliée) <ligne vide> Le corps commence ici…
  • Les en-têtes décrivent le message : qui l’a envoyé, quand, le sujet et — élément crucial pour MIME — comment le corps est encodé et structuré.
  • La ligne vide est la frontière entre les en-têtes et le corps. La toute première ligne vide termine le bloc d’en-têtes.
  • Le corps est tout ce qui suit. Pour un message moderne, le corps n’est généralement pas du texte brut mais une structure MIME comportant plusieurs parties.

2. Comment s’écrivent les en-têtes

Deux règles déroutent les lecteurs de la source brute :

  • Le repliement (folding). Un en-tête long peut être réparti sur plusieurs lignes ; chaque ligne de continuation commence par une espace ou une tabulation. À la lecture, ces lignes sont rejointes en une seule valeur (“dépliée”).
  • Les mots encodés (RFC 2047). Les en-têtes n’autorisent officiellement que l’ASCII, si bien que le texte non anglais et les emoji sont enveloppés sous la forme =?charset?B?…?= (Base64) ou =?charset?Q?…?= (une variante quoted-printable). Par exemple =?UTF-8?Q?caf=C3=A9?= se décode en café. Le décodeur ci-dessus affiche la valeur lisible ; la valeur brute est ce qui circule réellement sur le réseau.

3. Les champs d’en-tête expliqués

Voici les variables que vous verrez en haut de presque tout message. Elles ne sont pas toutes toujours présentes.

Adressage et identité

En-têteCe que cela signifie
FromL’auteur affiché au lecteur — un nom d’affichage et une adresse, par ex. Anna <anna@example.com>. C’est ce qu’affiche votre client de messagerie ; ce n’est pas une preuve de qui a réellement envoyé le message (voir SPF/DKIM ci-dessous).
To, CcDestinataires principaux et en copie carbone. Des en-têtes purement informatifs — la livraison réelle est pilotée par l’enveloppe SMTP, pas par eux.
BccCopie carbone invisible. Normalement supprimée avant la livraison, vous la voyez donc rarement dans le courrier reçu.
Reply-ToOù les réponses doivent aller si cela diffère de From (par ex. un expéditeur “no-reply” qui dirige les réponses vers le support).
Return-PathL’expéditeur d’enveloppe (l’adresse “MAIL FROM”) où sont envoyés les rapports de non-remise (bounces). Ajouté par le serveur destinataire et diffère souvent de From.
SenderL’agent réel qui a soumis le message lorsque ce n’est pas l’auteur (listes de diffusion, “au nom de”).
Message-IDUn identifiant globalement unique pour ce message, comme <a1b2c3@example.com>. Utilisé pour le fil de discussion et la déduplication.

Fils de discussion, dates et sujet

En-têteCe que cela signifie
SubjectLa ligne de sujet. Souvent un mot encodé lorsqu’elle contient des caractères non-ASCII.
DateLe moment où l’auteur a envoyé le message, avec un décalage de fuseau horaire, par ex. Wed, 9 Jul 2026 10:15:00 +0000.
In-Reply-ToLe Message-ID auquel ce message répond — permet aux clients de construire les fils de conversation.
ReferencesLa chaîne des Message-ID précédents dans le fil.

Routage et authentification

En-têteCe que cela signifie
ReceivedUne ligne de trace ajoutée par chaque serveur de messagerie par lequel le message est passé, la plus récente en haut. Les lire de bas en haut montre le chemin de livraison et les horodatages.
DKIM-SignatureUne signature cryptographique qui permet au destinataire de confirmer que le message a bien été envoyé par le domaine et n’a pas été altéré en transit.
Authentication-ResultsLe verdict du serveur destinataire sur les vérifications SPF, DKIM et DMARC (pass/fail). Un moyen rapide de juger si un “From” est digne de confiance.
Received-SPFSi l’IP expéditrice est autorisée à envoyer pour le domaine d’enveloppe.
List-UnsubscribePour le courrier en masse/les newsletters : l’adresse ou l’URL qu’un client utilise pour un désabonnement en un clic.

4. Les variables MIME — comment le corps est construit

Ces quelques en-têtes contrôlent toute la structure du corps. Ce sont les variables qui intéressent le plus ce décodeur.

VariableCe qu’elle fait
MIME-Version: 1.0Déclare que le message utilise MIME. Pratiquement toujours 1.0.
Content-TypeLa variable la plus importante de toutes : le type de média d’une partie (text/plain, text/html, image/png, application/pdf, multipart/*…). Elle porte des paramètres après des points-virgules.
charsetUn paramètre d’un Content-Type texte : l’encodage de caractères du texte, par ex. charset="UTF-8". Nécessaire pour reconvertir les octets en les bonnes lettres.
boundaryUn paramètre d’un type multipart : une chaîne de marquage unique. Chaque partie commence par --boundary et la dernière se termine par --boundary--.
Content-Transfer-EncodingComment les octets de la partie ont été empaquetés pour survivre en texte 7 bits sur le réseau (voir le tableau ci-dessous).
Content-Dispositioninline (l’afficher dans le message) ou attachment (le proposer comme fichier). Porte généralement un paramètre filename.
name / filenameLe nom de fichier suggéré d’une pièce jointe, respectivement dans Content-Type et Content-Disposition.
Content-IDUn identifiant pour une partie inline (par ex. une image) afin que le corps HTML puisse y faire référence avec cid:.

Les types multipart courants

  • multipart/alternative — le même message sous deux formes : une solution de repli text/plain et une version text/html. Le client affiche la plus riche qu’il peut.
  • multipart/mixed — un corps plus des pièces jointes regroupés ensemble.
  • multipart/related — une partie HTML accompagnée des images inline auxquelles elle fait référence par Content-ID.

Ces types s’imbriquent : un vrai message est souvent un multipart/mixed contenant un multipart/alternative (texte + HTML) à côté d’une pièce jointe PDF. Le décodeur affiche cela sous forme d’arbre numéroté (1, 1.1, 1.2…).

5. Les valeurs de Content-Transfer-Encoding

ValeurSignification
7bitASCII pur, rien de modifié. La valeur par défaut lorsqu’aucun encodage n’est indiqué.
8bitLes octets bruts supérieurs à 127 sont utilisés directement (nécessite un canal 8-bit-clean).
binaryOctets arbitraires, sans limite de longueur de ligne — rare dans le courrier normal.
quoted-printableTexte majoritairement lisible où les octets non-ASCII deviennent des =XX hexadécimaux (et un = en fin de ligne est un saut de ligne souple). Idéal pour du texte surtout anglais avec quelques accents.
base64N’importe quels octets recodés dans un alphabet sûr de 64 caractères, ~33 % plus volumineux. Utilisé pour les images, les PDF et autres pièces jointes binaires.

Le décodeur inverse celui de ces encodages qui a été utilisé, puis applique le charset de la partie afin que le texte redevienne lisible et que les pièces jointes reviennent sous forme de leurs octets d’origine (que vous pouvez télécharger).

6. Un exemple détaillé

Appuyez sur “Charger un exemple” ci-dessus pour charger un petit message et le voir décodé. Son squelette ressemble à ceci :

Subject: =?UTF-8?Q?Meeting_notes_=E2=80=93_caf=C3=A9?= ← mot encodé MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="OUTER" --OUTER Content-Type: multipart/alternative; boundary="INNER" --INNER Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable ← partie texte ... --INNER Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 ← alternative HTML ... --INNER-- --OUTER Content-Type: text/plain; name="notes.txt" Content-Disposition: attachment; filename="notes.txt" Content-Transfer-Encoding: base64 ← pièce jointe ... --OUTER--

Sa lecture : le type externe est multipart/mixed, donc le corps est “contenu + pièce jointe”. Son premier enfant est un multipart/alternative contenant les versions texte brut et HTML de la même note ; son second enfant est la pièce jointe notes.txt. Le Subject est un mot encodé qui se décode en “Meeting notes – café”.

7. Confidentialité

Tout reste sur votre appareil. Cet outil analyse le message avec du JavaScript dans votre navigateur — l’e-mail brut n’est jamais envoyé ni à nous ni à quiconque, et rien n’est stocké. Vous pouvez inspecter en toute sécurité des messages privés ou sensibles.

Une fois que vous savez de quel serveur provient un message, vous pouvez creuser davantage : consultez la Recherche MX du domaine, découvrez comment un serveur répond dans le guide Vérification SMTP avec telnet, ou vérifiez si une adresse peut recevoir du courrier avec le Vérificateur d'e-mail.