The short version

A .msg is a tiny filesystem in a file, holding one stream per property of the message. Reading it needs a compound file reader rather than an email parser. Everything is in there, headers, body and attachments, which is why a converter that drops the attachments is throwing away something it successfully read.

Not an email file, a disk image

Every other email format is a text envelope. A .msg is a Compound File Binary container, the same structure Microsoft used for .doc and .xls before 2007, which is effectively a small FAT filesystem stored inside a single file. It has a sector table, a directory tree and, because most of what it stores is only a few dozen bytes, a second smaller filesystem nested inside the first for anything under four kilobytes.

Two shapes of emailOne is a little filesystem, the other is plain text
.msg: a container of named streams__substg1.0_0037__substg1.0_1000__attach_version1.0_#0__properties_version1.0A filesystem inside one file..eml: one stream of textReadable from top to bottom, by anything.
Outlook stores a message the way Windows used to store compound documents, as a directory of separate streams. Reading it means walking that directory, which is why so little software outside Outlook manages it.

Inside that structure, every part of the message is a separate stream named after a numeric property tag. The subject is stream 0037, the sender is 0C1A, the HTML body is 1013. Attachments and recipients get their own sub-directories.

1

The header and the FAT

Sector size, where the directory starts, and the table that chains sectors together into streams.

2

The mini filesystem

Streams under 4 KB live in a second allocation table. Nearly every property is in here, so a reader that skips it reads almost nothing.

3

The directory tree

A binary tree of entries, one per stream or sub-storage, giving each one a name and a starting sector.

4

The property streams

Named by tag and type, so 0037001F is the subject as Unicode and 0037001E is the same subject as 8-bit text.

Why it usually needs Outlook

Because almost nothing else implements that reader. Mail clients understand the text format that messages travel in and have no reason to understand Outlook's private one, so a .msg arriving on a Mac or a phone tends to show up as an unopenable blob or as winmail.dat, which is a related Microsoft habit.

The format is documented and stable, though, which is why this can run in a browser tab instead. Nothing here needs Outlook, Windows, or a server.

What careless converters lose

What to avoid

The usual result

Body text only. Attachments named and discarded, recipients missing because the tool read the display fields but not the recipient sub-storages, accented characters mangled by reading the 8-bit copy of a property instead of the Unicode one.

What you want

What should happen

Unicode properties preferred, recipients read from their own storages when the display fields are empty, the sent date recovered from the timestamp property when the transport headers are gone, and every attachment embedded in the PDF.

The one case that genuinely cannot be read

Some older messages store their body only as compressed RTF, in a Microsoft-specific compression that is not any standard algorithm. When a message has no plain text and no HTML body, that is why.

The honest thing is to say so. A blank page in a document you are archiving is worse than a message that says the body was stored in a format it could not read, because the blank page looks like the email was empty. If you hit one, forwarding the message to yourself from Outlook generally produces a copy with an ordinary body.

Converting a folder

Drop every message at once. They become one PDF in the order listed, each starting on its own page with a bookmark carrying its subject, which is far easier to work with than a folder of separate files when someone needs to read the whole exchange.

MSG or EML

Both are single messages, but .eml is the message as it actually travelled and .msg is Outlook's own copy, which can carry things the mail system never saw such as categories, follow-up flags and internal address book entries. For an archive that has to reflect what was transmitted, keep the original file alongside the PDF whichever you have. This page accepts both, so a mixed folder converts in one go.

Questions people actually ask

What people ask when Outlook is not on the machine.

01Why is the sender an unreadable string starting with /O=?

That is an internal Exchange address, which is what Outlook stores for colleagues inside the same organisation. Where the message also carries a normal address the readable one is used; where it does not, the internal one is all that exists in the file.

02Can I get the attachments out without converting?

Convert with attachments embedded, then open the attachments panel in your PDF reader and save them from there. It is a roundabout route to the same files, but it needs no software you do not already have.

03Does it handle messages with an embedded message?

A forwarded message attached to another one is stored as a nested container. Its file is preserved as an attachment, though it is not laid out inline as a second message.

04Is the text searchable?

Yes, it is laid out as real text, so search and copy work across a whole converted folder.

05What about winmail.dat?

That is a different Microsoft format again, produced when Outlook sends rich text to a non-Outlook recipient. It is not a .msg and will not convert here.