Ein schlanker, nativer Viewer für Outlook-.msg- und .eml-Dateien – für Windows und Linux.
Geschrieben in Go: unter Windows mit lxn/walk (ein einzelnes .exe, ohne
Laufzeitabhängigkeiten), unter Linux mit GTK3 + WebKit2GTK. Von
Arcan Consulting, Lizenz Apache 2.0.
- Öffnet
.msg(Outlook, OLE2/MAPI) und.eml(RFC-822/MIME) – Format wird automatisch erkannt. - Zeigt Absender, Empfänger (An/Kopie), Datum und Betreff als native Kopfzeilen.
- Rendert den HTML-Text der Nachricht (eingebettete WebView), bei reinen Text-Mails den Klartext.
- Listet Anhänge auf und speichert sie per Klick.
- Modernes Aussehen (Segoe UI, gethemte Common-Controls v6, High-DPI/PerMonitorV2) und ein eigenes Briefumschlag-Icon.
- Datei-Verknüpfung: per Doppelklick auf eine
.msg/.eml-Datei direkt zu öffnen. - Fenster-Status: merkt sich Position und Größe (
%AppData%\msgview\window.jsonbzw.~/.config/msgview/); beim Erststart höchstens 50 % der Bildschirmhöhe und stets im sichtbaren Bereich (nie hinter der Taskleiste). - Theme-aware: übernimmt das Hell/Dunkel-Schema des aktiven Systems (Windows: Registry-Erkennung + dunkle Titelleiste; Linux:
prefers-color-scheme+ GTK-Theme).
Voraussetzung: Go (1.21+). Kein C-Compiler nötig – walk ist reines syscall,
daher auch von Linux/macOS aus cross-kompilierbar.
./build.shDas Skript
- erzeugt
icon.ico(go run ./cmd/genicon), - bettet Manifest + Icon als
rsrc_windows_amd64.sysoein (viaakavel/rsrc), - baut
msgview.exe(GOOS=windows GOARCH=amd64,-H windowsgui= ohne Konsolenfenster).
Manuell:
go run ./cmd/genicon
go run github.com/akavel/rsrc@latest -arch amd64 -manifest app.manifest -ico icon.ico -o rsrc_windows_amd64.syso
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -H windowsgui" -o msgview.exe .msgview.exe pfad\zur\nachricht.msg # Datei direkt öffnen
msgview.exe # leeres Fenster, dann Datei → Öffnen…
msgview.exe --register # .msg/.eml mit msgview verknüpfen (nur aktueller Benutzer)
msgview.exe --unregister # Verknüpfung wieder entfernen
Nach --register öffnet ein Doppelklick auf eine .msg-/.eml-Datei den Viewer direkt.
Die Verknüpfung wird nur unter HKEY_CURRENT_USER gesetzt – es sind keine Administratorrechte nötig.
Voraussetzungen zum Bauen: gcc, pkg-config, libgtk-3-dev, libwebkit2gtk-4.1-dev.
./build-linux.sh # baut das native Binary ./msgview (GTK3 + WebKit2GTK, via cgo)Nutzung:
./msgview pfad/zur/nachricht.eml # Datei direkt öffnen
./msgview # leeres Fenster, dann „Öffnen…"
./msgview --register # .msg/.eml verknüpfen (.desktop + xdg-mime, nur aktueller Benutzer)
./msgview --unregister # Verknüpfung entfernen
--register legt ~/.local/share/applications/msgview.desktop samt Icon an und setzt msgview per
xdg-mime als Standard für die Nachrichten-MIME-Typen – ohne root.
Vorgebaute Release-Dateien (kein Selbst-Bauen nötig):
| Datei | Distribution | Installieren |
|---|---|---|
msgview_1.0.0_amd64.deb |
Debian, Ubuntu, Mint, … | sudo apt install ./msgview_1.0.0_amd64.deb |
msgview-1.0.0.x86_64.rpm |
Fedora, RHEL, openSUSE | sudo dnf install ./msgview-1.0.0.x86_64.rpm |
msgview-1.0.0-r0.apk |
Alpine | sudo apk add --allow-untrusted ./msgview-1.0.0-r0.apk |
msgview-1.0.0-linux-amd64.tar.gz |
beliebig (per-User) | entpacken, dann ./install.sh (nach ~/.local, ohne root) |
Die Pakete deklarieren GTK3 + WebKit2GTK-4.1 als Abhängigkeit und installieren Binary, .desktop-Eintrag
(inkl. .msg/.eml-Verknüpfung) und Icons systemweit.
Selbst bauen (erzeugt alle Pakete nach dist/):
go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest # einmalig
./packaging/linux/build-packages.shAußerdem als Quelle dabei: PKGBUILD (Arch/AUR) und ein
Flatpak-Manifest.
Kein AppImage: WebKit2GTK bündelt seine Hilfsprozesse (
WebKitWebProcess/WebKitNetworkProcess) nicht zuverlässig in ein AppImage – die Nachrichtenansicht bliebe auf fremden Systemen leer. Für ein universelles, sandboxed Paket bitte Flatpak verwenden (WebKit kommt dort aus der GNOME-Runtime).
./build.sh erzeugt zusätzlich msgview-1.0.0-x64.msi, sofern wixl
(Paket msitools/wixl) installiert ist – die MSI lässt sich so direkt unter Linux/macOS bauen.
Quelle ist installer/msgview.wxs; dieselbe Datei baut unter Windows mit
WiX (wix build bzw. candle/light).
# nur die MSI (msgview.exe + icon.ico müssen vorliegen):
wixl -a x64 -o installer/msgview-1.0.0-x64.msi installer/msgview.wxsWas die Installation macht:
- installiert
msgview.exemaschinenweit nachC:\Program Files\msgview\, - legt eine Startmenü-Verknüpfung mit dem Icon an,
- registriert msgview als Standardprogramm für
.msgund.eml(Doppelklick öffnet den Viewer) und trägt es zusätzlich in „Öffnen mit" ein, - erscheint in Apps & Features (mit Icon) und lässt sich dort sauber deinstallieren; eine neue Version ersetzt die alte automatisch (Major-Upgrade).
Die Installation schreibt nach Program Files und HKLM und braucht Administratorrechte.
Die MSI ist als per-machine-Paket (MSI 5.0, InstallScope=perMachine) markiert und löst beim
Doppelklick die UAC-Abfrage aus. Falls in einer Umgebung dennoch keine Abfrage erscheint, nutze
den beiliegenden Launcher install.cmd – er erzwingt die Elevation zuverlässig:
Doppelklick auf installer\install.cmd → fragt per UAC nach Adminrechten und installiert
Doppelklick auf installer\uninstall.cmd → deinstalliert (ebenfalls mit UAC)
install.cmd und die .msi müssen im selben Ordner liegen (der komplette Ordner installer/ ist die Verteil-Einheit).
Alternativ aus einer als Administrator geöffneten Eingabeaufforderung/PowerShell:
msiexec /i msgview-1.0.0-x64.msi (normale Oberfläche)
msiexec /i msgview-1.0.0-x64.msi /qb (nur Fortschrittsbalken)
Hinweis: Da die Verknüpfung maschinenweit gesetzt wird, übernimmt msgview die
.msg-Zuordnung ggf. von Outlook. Die Deinstallation entfernt die Verknüpfung wieder. Wer Outlook als Standard behalten will, baut ohne die KomponenteComp_Assoc(in der.wxsaus demFeatureentfernen) und nutzt stattdessen die per-User-Variantemsgview.exe --register(ganz ohne Adminrechte).
In testdata/ liegen Beispieldateien zum Ausprobieren und für Screenshots:
quartalsbericht.msg— Outlook-.msg(Absender, An/Kopie, Datum, Betreff, HTML-Tabelle, Anhang)angebot.eml— HTML-Angebotprojektupdate.eml— HTML-Status mit Datei-Anhang
Die .msg erzeugt cmd/gentestmsg: go run ./cmd/gentestmsg testdata/quartalsbericht.msg.
.github/workflows/release.yml baut bei einem v*-Tag automatisch
Windows (.msi + portable .exe) und die Linux-Pakete (.deb/.rpm/.apk/.tar.gz), erzeugt
SHA256SUMS und hängt alles ans GitHub-Release. (Die Android-APK kommt aus dem separaten Android-Projekt.)