Comment afficher la source d’un e-mail
- Récupérez le message brut dans votre client de messagerie (voir le tableau ci-dessous) et collez-le, ou déposez le fichier
.emlou.mhtsur la page. - Le résumé affiche From, To, Cc, Subject, Date et Message-ID, décodés. Tous les en-têtes liste chaque en-tête avec sa valeur décodée et sa valeur brute.
- Lisez le Corps du message en texte brut ou en HTML. Le HTML est affiché dans une sandbox.
- Pièces jointes liste chaque fichier avec son nom, son type, sa taille et son content ID, un bouton Télécharger et un aperçu pour les images.
- Structure MIME montre l’imbrication des parties, ce qui aide quand une pièce jointe semble manquer.
| Client de messagerie | Où trouver la source |
|---|---|
| Gmail | Menu du message (⋮) → Afficher l’original, puis Télécharger l’original |
| Outlook sur le web | Menu du message (…) → Afficher → Afficher la source du message |
| Thunderbird | Affichage → Source du message (Ctrl+U), ou Fichier → Enregistrer sous pour un .eml |
| Apple Mail | Présentation → Message → Source brute |
Ce que gère le décodeur
- En-têtes encodés : mots RFC 2047 en Base64 (
B) et en quoted-printable (Q), mots adjacents fusionnés, tout jeu de caractères connu du navigateur, plus les en-têtes en UTF-8 brut. - Noms de pièces jointes au format RFC 2231, comme
filename*=UTF-8''Rechnung%20M%C3%A4rz.pdf, et les suites découpéesfilename*0*=. - Corps en
base64et enquoted-printable, décodés avec le jeu de caractères déclaré.f=C3=BCrdevientfür. - Messages imbriqués : un e-mail transféré joint en
message/rfc822est parcouru comme le message extérieur. - Images intégrées : les références
cid:du HTML sont résolues vers les images jointes. - Entrée partielle : une partie MIME Base64 isolée, un message entier encodé en Base64, ou un corps multipart qui commence à
--boundarysans en-têtes.
Un message encodé en Base64 dans son ensemble commence généralement par UmV0dXJuLVBhdGg6 (Return-Path:) ou UmVjZWl2ZWQ6 (Received:). Collez-le tel quel ; le décodeur commence par le déballer.
Examiner un message suspect
Les en-têtes en disent plus sur une tentative de phishing que le corps. Ce qu’il faut comparer dans Tous les en-têtes :
- From avec Return-Path et Reply-To. Une adresse de réponse sur un autre domaine est un signe classique.
- Authentication-Results, ajouté par le serveur de réception :
spf=,dkim=etdmarc=avec pass ou fail. - Les lignes Received, lues de bas en haut, montrent le chemin du serveur d’envoi jusqu’au vôtre.
- Types de pièces jointes : une pièce jointe
.html,.isoou.zipd’un expéditeur inconnu mérite la méfiance, tout comme une double extension du typeinvoice.pdf.html.
Comme le contenu distant est bloqué, afficher le corps HTML ici ne charge pas de pixels de suivi et ne confirme pas que votre adresse est lue. Le CSS de la page est aussi supprimé : les newsletters paraissent donc plus sobres que dans un client de messagerie.
Extraire les pièces jointes en Python
from email import policy
from email.parser import BytesParser
with open("message.eml", "rb") as f:
msg = BytesParser(policy=policy.default).parse(f)
print(msg["Subject"])
for part in msg.iter_attachments():
name = part.get_filename()
with open(name, "wb") as out:
out.write(part.get_payload(decode=True))
print("saved", name)
policy.default décode les en-têtes en mots encodés : msg["Subject"] est donc déjà lisible. En usage réel, nettoyez name avant d’écrire, puisqu’il vient de l’expéditeur. Base64 dans les e-mails explique comment les pièces jointes sont encodées, et l’encodeur MIME Base64 produit le format à 76 colonnes.
Limites connues
- Les fichiers
.msgd’Outlook ne sont pas pris en charge. Une partiewinmail.dat(TNEF) est listée comme pièce jointe, mais pas décompressée. - Les liens du corps HTML ne font rien, et c’est voulu.
- Les messages comportant un nombre extrême de parties MIME sont tronqués avec un avertissement.
FAQ
Comment ouvrir un fichier .eml sans Outlook ?
Déposez-le sur cette page. Les en-têtes, les corps texte et HTML et toutes les pièces jointes s’affichent, et les pièces jointes peuvent être téléchargées une par une. Les fichiers jusqu’à 64 Mo sont lus directement dans le navigateur.
Que signifie =?UTF-8?B?…?= dans une ligne d'objet ?
C’est un mot encodé RFC 2047 : B signifie que le texte entre les deux est en Base64, Q une variante quoted-printable. =?UTF-8?B?UmVjaG51bmcgTcOkcno=?= se décode en Rechnung März. Le décodeur affiche côte à côte la valeur décodée et la valeur brute.
Peut-on afficher ici sans risque un e-mail suspect ?
Le corps HTML est rendu dans un cadre en sandbox, sans scripts, formulaires ni liens actifs, et les images distantes et pixels de suivi sont bloqués : l’ouvrir n’apprend donc rien à l’expéditeur. Les pièces jointes sont listées et proposées au téléchargement, jamais ouvertes.
Peut-il ouvrir les fichiers .msg d'Outlook ?
Non. Un fichier .msg est un format binaire d’Outlook, pas du MIME. Ouvrez le même message dans Outlook sur le web, choisissez Afficher la source du message et collez ce texte ici.