InLook is a lightweight email viewer designed specifically for .eml files in RFC 822/MIME format, commonly used by Outlook, Thunderbird, and other email clients to save individual messages. The software efficiently renders headers, plain text or HTML bodies, and attachments while ensuring embedded content is securely sandboxed under a strict Content Security Policy that blocks remote loads and tracking pixels.
Key features include its ability to follow system light/dark themes for enhanced visual comfort, register as the default handler for .eml files, and operate entirely offline without any network access. InLook prioritizes security by preventing external resources from loading within emails, ensuring user privacy. It is free software provided by Struis ICT.
Ideal for users who need to quickly and securely view email messages without unnecessary resource consumption or network dependencies, InLook can be easily installed via winget.
README
InLook
Fast, safe viewer for .eml and Outlook .msg email files.
Free Software from Struis ICT.
InLook opens an email file (.eml, Outlook .msg, or .oft template) in a
clean native window and renders its headers, body, and attachment list —
without phoning home, loading remote trackers, or running any scripts the
email tries to sneak in.
Tiny & native — a single Rust binary using tao
for the window and wry (WebView2 on Windows,
WebKitGTK on Linux, WKWebView on macOS) to render the email body.
Safe by default — HTML bodies are wrapped in a fully sandboxed ``
with a strict Content-Security-Policy. No remote images, no tracking pixels,
no scripts, no network. Embedded (cid:) images render inline from the
message itself — never from the network.
Attachments — click to save any attachment (always via Save As, never
auto-run); attached emails open in a new InLook window.
Cross-platform — Windows (MSI + exe), Linux (.deb + AppImage + Flatpak),
macOS (universal .dmg), Homebrew cask.
System theme aware — follows the OS light/dark setting automatically.
> Windows note: the body renderer needs the Microsoft Edge WebView2
> Runtime, which ships with Windows 10/11 by default. If missing, InLook shows
> a clear error telling you to install it.
> macOS note: signed + notarized .dmg builds are in the pipeline (see
> packaging/macos/). Until those are enabled, the
> .dmg is unsigned, so Gatekeeper blocks it on first launch. Open it once with
> right-click → Open → Open, or run
> xattr -dr com.apple.quarantine /Applications/InLook.app.
Usage
inlook Open an .eml / .msg / .oft email file
inlook Open a file picker
inlook register Associate .eml/.msg/.oft with InLook (Windows, admin)
inlook unregister Remove the file associations (Windows, admin)
inlook --version
inlook --help
On Windows, inlook register (run from an elevated terminal) registers
InLook as a handler for .eml, .msg, and .oft files and opens Windows
Settings on InLook's Default Apps page to finish with one click.
> .msg note: InLook shows the HTML or plain-text body stored in the
> message. Messages whose body exists only as compressed RTF (rare — mostly
> very old Outlook versions) render their headers and attachment list with an
> empty body.
Build from source
Requires a recent stable Rust toolchain (built with 1.95; MSRV is 1.88, verified in CI — the mail-parser and icu dependencies pull the floor up).
cargo build --release
cargo run --release -- test/sample.eml
On Linux you also need the WebKitGTK/GTK dev packages:
See AGENTS.md for the full build, test, packaging, and release
workflow.
Versioning
InLook follows Semantic Versioning 2.0.0
(MAJOR.MINOR.PATCH). For an app, the "public API" is the user-facing
contract: the command-line flags/subcommands and their exit codes, the .eml
file association, and the published package identifiers. MAJOR = a
backwards-incompatible change to that contract, MINOR = a backwards-compatible
new capability, PATCH = a backwards-compatible fix. As of 1.0.0 that
contract is stable — breaking it requires a MAJOR bump. Releases are automated
from Conventional Commits via
release-please; see AGENTS.md §5.1 for the full policy.
Windows release binaries (inlook.exe, the .msi) are built from source by
GitHub Actions (release.yml) and signed per
release after manual approval.
Privacy policy
InLook is offline by default: it has no telemetry and phones nothing home.
Email content stays on your machine, and remote content inside emails is never
loaded (blocked by CSP + iframe sandbox).
InLook only ever contacts the network to check for a newer version (Windows
only), and only when you ask it to:
Manually, any time:About → "Check for updates". This does a single
HTTPS request to github.com and tells you whether you're up to date.
Automatically: on first run InLook asks once whether to also check on
startup. If you say yes it does the same check occasionally; if you say no (or
never answer), it never checks on its own — but the manual menu item still
works whenever you want it.
In every case it uses Windows' own secure connection (no third-party HTTP or TLS
code), reads only the latest release tag, and never downloads or installs
anything or sends any information about you or your email.
License
Dual-licensed under MIT OR Apache-2.0 — you may use it under the terms of
either license. See LICENSE-MIT and
LICENSE-APACHE.