Skip to content

ArcanConsulting/msgview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

msgview

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.

Funktionen

  • Ö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.json bzw. ~/.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).

Windows-Build

Voraussetzung: Go (1.21+). Kein C-Compiler nötig – walk ist reines syscall, daher auch von Linux/macOS aus cross-kompilierbar.

./build.sh

Das Skript

  1. erzeugt icon.ico (go run ./cmd/genicon),
  2. bettet Manifest + Icon als rsrc_windows_amd64.syso ein (via akavel/rsrc),
  3. 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 .

Nutzung

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.

Linux (WebKitGTK)

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.

Fertige Linux-Pakete

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.sh

Auß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).

MSI-Installer

./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.wxs

Was die Installation macht:

  • installiert msgview.exe maschinenweit nach C:\Program Files\msgview\,
  • legt eine Startmenü-Verknüpfung mit dem Icon an,
  • registriert msgview als Standardprogramm für .msg und .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).

Installieren (mit Adminrechten)

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 Komponente Comp_Assoc (in der .wxs aus dem Feature entfernen) und nutzt stattdessen die per-User-Variante msgview.exe --register (ganz ohne Adminrechte).

Testdaten

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-Angebot
  • projektupdate.eml — HTML-Status mit Datei-Anhang

Die .msg erzeugt cmd/gentestmsg: go run ./cmd/gentestmsg testdata/quartalsbericht.msg.

Automatische Releases

.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.)

About

Viewer for Outlook .msg and .eml files — Windows, Linux, Android

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages