EML Viewer, Email Headers & MBOX Viewer

EML Viewer, Email Headers & MBOX Viewer, a VS Code extension by Zovo

EML viewer and email viewer for .eml, .emlx and .mbox files in VS Code. See the HTML with remote images blocked, attachments, SPF/DKIM/DMARC results and the delivery route. Offline.

Install in VS CodeOpen the Marketplace page

Free, MIT license. Needs VS Code 1.90.0 or newer. Extension ID zovo.eml-viewer, version 0.1.5.

Read saved .eml, .emlx and .mbox email files in VS Code the way a mail client shows them, with remote images blocked until you ask for them.

A newsletter saved as newsletter.eml, open in EML Viewer inside VS Code. The header card shows the subject, From, To, Reply-To and Date, with green SPF pass, DKIM pass and DMARC pass badges and a "4 hops" link. Two attachments, signups-2026.csv and release-notes-october.pdf, each have a Save button. A blue bar says "3 remote images blocked" with a Show images button. Below it the HTML body renders with its inline logo and bar chart.

Real output from VS Code 1.142 on macOS. The file is newsletter.eml, made by scripts/make-samples.js with made-up people at example.com. scripts/e2e-vscode.mjs installed the packaged extension in a clean VS Code profile, opened the file and saved the window through the debug port.

Quick start

  1. Install EML Viewer.
  2. Click any .eml, .emlx, .mbox or .mbx file in the Explorer.

If another editor opens, right-click the file and pick "Open in EML Viewer", or use "Reopen Editor With..." from the editor title menu. That also works for mailboxes with no extension, such as Thunderbird's Inbox file. "EML Viewer: Get Started" in the Command Palette opens a short tour.

Questions people ask

Is EML Viewer, Email Headers & MBOX Viewer free?

Yes. EML Viewer, Email Headers & MBOX Viewer is free and MIT licensed.

How do I install EML Viewer, Email Headers & MBOX Viewer?

Click "Install in VS Code" above, or search for zovo.eml-viewer in the Extensions view.

What you see for each message

PartWhat it shows
Header cardSubject, From, To, Cc, Bcc, Reply-To (when it differs from From) and the date in your time zone
BadgesSPF, DKIM and DMARC results, green for pass, red for fail, yellow for none or neutral
AttachmentsName, size and a Save button. Names are cleaned, so a name can't point outside the folder you pick
MessageThe HTML body in a sandboxed frame. Links ask before they open in your browser
TextThe plain text part, or text made from the HTML when there is none
AuthenticationEach Authentication-Results header, every DKIM signature (domain, selector, algorithm), Received-SPF and the ARC chain
RouteReceived hops, oldest first, with hostnames, IPs, protocol, TLS and the delay between hops. Hops over 5 minutes are marked
HeadersEvery header line, with Copy
SourceThe raw message (the first 2 MB), with Copy
The Authentication tab for a spoofed invoice. Three cards read SPF FAIL, DKIM NONE and DMARC FAIL. Below them the Authentication-Results header from mx1.example.org lists spf=fail for , dkim=none and dmarc=fail with p=QUARANTINE, and the Received-SPF line is shown in full.

The results are the ones the receiving server wrote. EML Viewer doesn't query DNS or check signatures again, which keeps it offline. A message from a Sent folder or written by a script often has no Authentication-Results header, and the tab says so.

The Route tab for the same message. Two hops, oldest first. Hop 1 goes from unknown-host.example.net at 192.0.2.77 to mx1.example.org over SMTP. Hop 2 goes from mx1.example.org to mailstore.example.org over LMTP and is marked +9 min 0 s in yellow.

Mailboxes

team-inbox.mbox with 2,500 messages. The left pane has a search box, a sort menu set to Newest first and a list of senders, subjects, dates and sizes, with a paperclip on messages that have attachments. The selected message is open on the right in the same view as a single .eml file.

Files and limits

FileNotes
.emlOne RFC 822 message, as saved by Outlook, Thunderbird, Gmail and most other clients
.emlxApple Mail's format. The byte count line and the trailing property list are skipped
.mbox, .mbxMailboxes from Thunderbird, Gmail Takeout, Apple Mail export and mail servers

Files over 4 GB show a message instead of opening. A single message over 200 MB (setting emlViewer.maxMessageMB) also shows a message, and "Open as text" in the toolbar opens the raw file either way. Outlook .msg and .pst files are not supported.

Settings

SettingDefaultWhat it does
emlViewer.alwaysShowRemoteImagesfalseLoad remote images in HTML messages without asking.
emlViewer.maxMessageMB200Largest single message that is parsed, in MB.
emlViewer.askForRatingtrueAsk one time for a Marketplace rating after a few days of use. Nothing is sent anywhere.
emlViewer.showSupportLinkstrueShow the small Sponsor and More free viewers links in the status line.

Privacy and safety

EML Viewer makes no network calls and has no telemetry. The only requests it can cause are the remote images you choose to show and the links you confirm. The mail file is never written. The only files the extension writes are the attachments you save, and it refuses to save over the mail file itself.

The webview runs under a strict Content Security Policy. Its scripts need a per-load nonce, and the message frame has no script rights at all. Subjects, names and header values are shown as plain text, so a subject such as `` stays text.

The unsafe HTML test message. Its subject is shown as literal text. In the body the script, iframe, object, meta refresh, base tag and javascript link are gone, the remote pixel and CSS background are blocked, and the form has no action.

License

MIT. Messages are parsed with postal-mime (MIT-0). See THIRD-PARTY-NOTICES.md.

Install EML Viewer, Email Headers & MBOX Viewer

Click the button to open VS Code and install it, or press Ctrl+P (Cmd+P on macOS) in VS Code and run ext install zovo.eml-viewer.

Free, MIT license. Needs VS Code 1.90.0 or newer. Extension ID zovo.eml-viewer, version 0.1.5.

Source code and issues are on GitHub.

All our VS Code extensions

Support this work

If this extension saves you time, you can support the work on GitHub Sponsors. Monthly tiers start at $5, and one-time tiers start at $15. Sponsorship is optional, and the tool works the same without it.