# MSG Viewer

> 不用安裝 Outlook，直接在瀏覽器開啟 .msg 檔：寄件者、收件者、日期、主旨、內文一次看齊，附件也能直接下載。整個過程都在你的瀏覽器裡完成，檔案不會上傳到任何伺服器。

- URL: https://bytescope.dev/zh-Hant/msg-viewer/
- Locale: zh-Hant · Also: [en](https://bytescope.dev/en/msg-viewer.md) · [ja](https://bytescope.dev/ja/msg-viewer.md)
- Runs: .msg 檔案會在你的裝置上直接開啟。郵件標頭、內文與附件皆在頁面內解析，絕不會傳送至任何地方 — 無需上傳、無需帳號，也不需要 Outlook。
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

`.msg` 是 Outlook 把郵件拖到桌面或另存時產生的檔案，也是最難搞的一種附件：沒裝 Outlook 幾乎沒有東西能開它，預覽不了，點兩下只剩一個打不開的圖示。把它拖進這一頁，郵件會當場被拆開——寄件者、收件者、寄出日期、主旨、純文字和 HTML 兩種內文，每個附件旁邊都有下載按鈕。

檔案不會離開你的電腦。一封存下來的郵件寫明了誰寫信給你、收件人還有誰、附了什麼——這種東西不該只為了讀一下就交給陌生的伺服器。所以容器的解析、屬性的解碼、附件的還原，全部在你的瀏覽器裡完成；這裡根本沒有上傳端點，就算手滑也傳不出去。

HTML 內文的本質是「寄件者寫的標記」，我們就照這個本質對待它：內文畫在一個沙箱化的 frame 裡，不能執行 script、碰不到這個頁面，預設也完全不能連網——那顆用來通知寄件者「信被打開了」的追蹤像素，在你勾選允許之前永遠載入不了。連結不做成可點擊的樣子，而是把真正的目的地印在文字旁邊，因為在一封你沒預期會收到的郵件裡，最值得細看的就是那個目的地。

檔案底層是一個 `CFB` 容器：由 storage 和 stream 組成的小型檔案系統，郵件的 MAPI 屬性就寫在裡面。這個結構是對照 MS-CFB 與 MS-OXMSG 規格逐位元組解析出來的，不是用猜的。檔案哪裡壞了——stream 被截斷、sector 鏈繞成迴圈、瀏覽器解不出的 code page——頁面會另起一行明講，而不是把殘缺的郵件當成完整的給你看。

## Limits

Does not convert .msg to .eml or open .pst mailboxes; it displays one Outlook .msg message and its attachments.

## FAQ

### 沒有 Outlook 要怎麼開 .msg 檔？

拖進這一頁就好。`.msg` 容器直接在瀏覽器裡解析，寄件者、收件者、日期、主旨、內文、附件全部看得到——不用 Outlook、不用匯入郵件軟體、也不用帳號。

### 我的郵件會被上傳到哪裡嗎？

不會。瀏覽器直接從你的磁碟讀檔，所有處理都在頁面裡完成。整個過程沒有伺服器參與，關掉分頁就什麼都不留。

### 寄件者會知道我打開這封郵件嗎？

除非你自己允許，否則不會。遠端圖片——包括一像素的追蹤圖——預設全部封鎖：HTML 內文是在完全禁止網路請求的政策下渲染的。頁面會告訴你找到幾個遠端參照；要載入得自己勾一個明確的核取方塊，而且每開一個新檔案就會重設。

### HTML 內文裡的 script 會執行嗎？

不會。內文渲染在一個 `sandbox` 既不給 script、也不給 same-origin 存取的 iframe 裡，所以郵件裡的 script 跑不起來，郵件內容也讀不到這個頁面。預設先顯示純文字內文。

### 附件可以下載嗎？

可以——每個附件都有自己的下載按鈕，位元組直接取自你手上的 `.msg`。不會抓任何東西，也不會送出任何東西。

### 為什麼附件存下來的檔名跟原本有點不一樣？

因為檔案裡的名字是寄件者寫的，可能夾帶目錄分隔符、`..` 片段、控制字元，或那種讓 `invoice.exe` 看起來像 `invoice.txt` 的隱形字元。這些都會在檔名進到你的下載資料夾之前被剝掉；只要清理後的名字和原本不同，頁面就會顯示出來。

### 為什麼時間都用 UTC 顯示？

因為郵件本來就是這樣存的。Outlook 記錄的是 UTC 的 `FILETIME`，如果順手換算成你電腦目前的時區，就會出現「這封信明天才寄出」這種怪事。所以數值照記錄原樣顯示，並標明 `UTC`。

### 如果檔案壞了，或根本不是 .msg 呢？

頁面會明確說出問題在哪。完全不是 Compound File Binary 容器、stream 比宣告的長度短、sector 鏈繞成迴圈、瀏覽器解不出的 code page——每一種都有自己的一行訊息，而已經解析成功的部分照樣顯示，不會跟著一起丟掉。

## Related tools

- [ICS Viewer](https://bytescope.dev/zh-Hant/ics-viewer.md) — 開啟 .ics 行事曆檔案：行程清單、月檢視與 CSV 匯出。
- [VCF to CSV Converter](https://bytescope.dev/zh-Hant/vcf-to-csv.md) — 將 .vcf 聯絡人匯出檔轉換為 Excel 能正常開啟的 CSV。
- [File Type Identifier](https://bytescope.dev/zh-Hant/file-type.md) — 當副檔名錯誤或遺失時，透過位元組特徵辨識檔案格式。
