Lecteur EML et décodeur MIME

Collez un message ou ouvrez un fichier .eml puis cliquez sur Inspecter localement : en-têtes, corps, aperçu HTML isolé et chaque partie MIME — avec Enregistrer pour les octets décodés — restent dans la page, rien n’est envoyé.

Traitement local ·
*.eml

Comment lire un message .eml sans l’envoyer nulle part

Collez la source d’un message dans le champ ou ouvrez un fichier .eml depuis le disque, puis cliquez sur Inspecter localement. Toute la lecture se fait dans l’onglet : rien n’est envoyé et la page ne charge rien pendant ce temps. Le résultat se répartit entre les en-têtes décodés, le corps en texte brut, un aperçu HTML isolé et la liste des parties MIME : un message mêlant texte, HTML et pièces jointes se lit donc partie par partie.

En-têtes et corps sont décodés avec le jeu de caractères déclaré par chaque partie : un objet envoyé sous la forme =?windows-1252?Q?Rechnung_=80_offen?= s’affiche « Rechnung € offen », un corps GB2312 s’affiche 后台任务已完成。, et l’UTF-8 garde ses accents. Les parties sont coupées ligne par ligne à la frontière MIME au lieu de chercher ce texte n’importe où dans le corps : une ligne de tirets dans un texte cité ne termine plus le message trop tôt.

  1. Collez la source du message dans le champ ou déposez un fichier .eml sur la zone de dépôt ; le nom du fichier apparaît à côté de la zone et le texte est chargé dans le champ.
  2. Cliquez sur Inspecter localement. Les indicateurs comptent les en-têtes, les parties, les pièces jointes et la taille d’entrée ; la fiche de métadonnées affiche De, À, Objet, Date et ID du message — un champ absent apparaît sous forme de tiret.
  3. Lisez le corps en texte brut : Copier le met dans le presse-papiers, Télécharger l’enregistre. Un fichier choisi donne son nom au téléchargement (win1252-body.txt pour win1252.eml) ; un message collé est enregistré sous message-body.txt.
  4. Vérifiez l’aperçu HTML : il est dessiné dans un cadre isolé, ressources externes désactivées, donc un pixel de suivi écrit dans le HTML n’est jamais demandé.
  5. Ouvrez la liste des pièces jointes : chaque partie affiche son nom, son type MIME, sa taille décodée et son encodage de transfert, et Enregistrer écrit sur le disque les octets décodés sous le nom d’origine.

Ce que le décodeur lit, et où il s’arrête

Ce que le décodeur lit

Le jeu de caractères vient de l’en-tête Content-Type de chaque partie, pas de la page : windows-1252 (« Betrag: €12,50 – fällig am Montag. »), GB2312/GBK (后台任务已完成。), UTF-8, ainsi qu’une étiquette inconnue qui retombe sur une lecture tolérante des octets, ressortent en texte lisible. Les mots codés des en-têtes (RFC 2047) sont décodés, et l’espace entre deux mots codés voisins est supprimé comme le veut la norme : « Deploy finished » n’est pas séparé deux fois.

La structure est suivie ligne par ligne : une partie multipart n’est coupée que là où une ligne vaut exactement --frontière (espaces de fin admis), donc une réponse citée contenant ----b1---- garde son texte. Un en-tête multipart sans paramètre boundary, un boundary="" sans valeur et une frontière entre guillemets simples ne perdent plus le corps : il est affiché en texte. Un message transféré en message/rfc822 est analysé comme un message, son corps apparaît dans le volet de texte et l’enveloppe est listée dans le tableau des pièces jointes ; un message imbriqué sur plus de douze niveaux est aplati en texte au lieu de disparaître.

L’aperçu HTML

L’aperçu conserve le balisage propre du message et ses règles <style>, mais retire tout ce qui pourrait charger ou exécuter quelque chose : script, iframe, object, embed, link, meta, base, form et les contrôles de formulaire sont supprimés, les attributs on* sont écartés, et chaque attribut d’URL (src, href, poster, background et les autres) pointe vers un fragment inerte sauf s’il s’agit d’une URL data:. srcset ne garde que ses candidats embarqués. C’est ce que signifie ici « ressources externes désactivées » : sur 25 astuces de pistage — un pixel simple, un srcset, @import et url() dans un bloc de style, un style en ligne —, l’aperçu corrigé n’a fait aucune requête au serveur de pistage, là où la version précédente en faisait quatre.

C’est un filtre pour lire du courrier, pas un antivirus. Il n’exécute aucun script, ne charge aucun contenu distant et ne dit pas si un lien du message est sans danger.

Où le lecteur s’arrête

Le lecteur décode le message tel qu’il a été écrit ; il ne vérifie pas les signatures S/MIME ni PGP, ne déchiffre pas les messages protégés et ne répare pas un fichier qui n’est pas un message. Les parties texte sont réunies dans leur ordre d’apparition : un message portant plusieurs parties text/plain les affiche l’une après l’autre. Les pièces jointes sont enregistrées en octets et non ouvertes, et il n’y a pas d’export JSON : en-têtes, corps, aperçu et liste des parties sont tout ce que la page produit.

Outils récents :