A .msg is how Outlook saves a single email. Outlook opens it with a
double-click; almost nothing else does. Your options are to read it as it is, or
to turn it into an .eml, the standard format every mail program opens.
An Outlook message, read in the browser without Outlook.
On Debian or Ubuntu, install it and convert:
sudo apt install libemail-outlook-message-perl
msgconvert message.msg
It prints nothing and writes message.eml next to the original. msgconvert *.msg
does a whole folder. Then open the .eml in any mail program.
Why it won't open
A .msg is not text. It is a binary container of Outlook properties (the
subject, the sender, the body in up to three forms, each attachment), so a text
editor shows gibberish and most mail programs refuse it.
macOS has nothing built in that reads one. Finder lists a .msg as a plain
"Document" with no app behind it, while an .eml is an "Email Message" that
Apple Mail opens. That is the whole reason converting works: once it is an
.eml, the Mac already knows what to do.
Read it in the browser
- Open the MSG Viewer and drop the
.msgon the page, or choose it. - Read the message under Message. Images from the internet stay blocked until you click Load images.
- Click an attachment to download it. An attached message (a mail forwarded as an attachment) opens in place, and the bar above shows the way back.
- Headers and Info show where the mail came from and the servers it passed through, when Outlook kept them. Mail from Sent Items or Drafts has none.
A message forwarded as an attachment opens in place.
Outlook often stores a message only as Rich Text, with the HTML tucked inside it. The viewer unpacks that HTML, so a designed mail looks designed, not flattened to text.
Convert it with msgconvert
msgconvert comes with the Perl module Email::Outlook::Message. On Debian and
Ubuntu the package is libemail-outlook-message-perl.
With --no-install-recommends, msgconvert installs but fails on its first
run with Can't locate Email/Address.pm. The plain apt install above pulls in
libemail-address-perl and works.
Elsewhere, including a Mac, install it from CPAN with cpanm:
cpanm Email::Outlook::Message Email::Address
msgconvert message.msg
Some of its dependencies are compiled, so this needs a C compiler (on a Mac,
Apple's command line developer tools). Without one, the install stops with
Installing the dependencies failed.
What the .eml keeps
The headers, the recipients, the attachments and attached messages all come through. The body is where it falls short. For a message Outlook stored as Rich Text, which is common, msgconvert writes the plain text and the Rich Text as it is. It does not unpack the HTML inside, so a mail program shows the plain-text version and the formatting is gone.
The same file, converted both ways:
| Body parts in the .eml | msgconvert | MSG to EML (browser) |
|---|---|---|
| Plain text | Yes | Yes |
| HTML | No | Yes, recovered from the Rich Text |
| Rich Text | Yes, as application/rtf |
No (it only holds the HTML) |
| Inline image | Yes, as an attachment | Yes, in the body |
On one of our test files, a subject with öäü in it also came out as raw bytes
that a UTF-8 reader shows as ���. If the message matters, look at the result
before you send it on.
Each format says what it drops before you download.
If you do have Outlook
On Windows with classic Outlook, double-click the file. For new Outlook and
Outlook on the web, Microsoft's instructions are to drag the file into the
reading pane, and opening .msg files there needs a qualifying Microsoft 365
subscription: see Open .eml, .msg, and .oft files in new Outlook and Outlook on
the web.
Which to use
- One file, any device: the MSG Viewer. Nothing to install, and the formatting survives.
- A folder of them, on Linux:
msgconvert *.msg, then import the.emlfiles into your mail program. Check one that had formatting first. - A mix of .eml, .msg and .mbox: the Email Viewer opens all of them, several at once.
When you have the .eml, double-click it on a Mac and it opens in Mail. On
anything else, open it in your mail program or drop it back on the viewer.