Outlook の .msg ファイルを開く

Outlook が入っていなくても .msg を読めます。本文・ヘッダ・添付をすべてブラウザ内で、アップロードなしで。

あなたのファイルは安全です — すべてブラウザ内で処理。サーバーには一切送信しません。

.msg ファイルをここにドロップ

またはクリックしてファイルを選択

Outlook のメッセージファイル(.msg)。アップロードは発生しません。


この MSG ビューアの仕組み

.msg は、いわゆるメールファイルではありません。実体は複合ファイル —— 1つのファイルの中に収まった小さな FAT ファイルシステム —— で、メッセージは MAPI プロパティごとに名前が付いたストリームに分かれて格納されています。

このコンテナは .doc / .xls / .ppt と同じもので、4つが同一のシグネチャを共有し、中身を見ないと区別できないのはそのためです。

コンテナの読み取り
CFB の構造を直接たどっています。ヘッダ、FAT とその続きである DIFAT、ディレクトリツリー、ミニ FAT。間にライブラリを挟んでいないので、サーバーに処理させるためのアップロードも必要ありません。
ミニストリームが要
4096 バイト未満のストリームは、1本の通常ストリームを 64 バイト単位に区切った「ミニセクタ」に詰め込まれます。メッセージ内の MAPI プロパティはほぼすべてこのサイズなので、ミニ FAT を読まない実装は事実上何も読めません。両方の経路に対応し、両方をテストしています。
プロパティストリーム
各プロパティは __substg1.0_ に続けてプロパティIDと型を16進で並べた名前のストリームです。0037001F なら Unicode の件名、0037001E なら同じ件名のコードページ版。日時などの固定長の値は代わりに __properties_version1.0 にまとめられています。
ファイル名の解決順序
添付名は PidTagAttachLongFilename(0x3707)→ PidTagAttachFilename(0x3704)→ PidTagDisplayName(0x3001)の順で採用します。短い方だけを読む実装が、日本語ファイル名を 8.3 形式の文字化けにしてしまう原因です。winmail.dat と同じ罠で、ここでも同じ方法で回避しています。
HTML の安全性
PR_HTML はバイナリで、他のテキストと違って Unicode ではなくメッセージのコードページに従います。デコードしたうえで DOMPurify の許可リストでサニタイズし、サンドボックス化した iframe 内に描画します。

対応していない範囲

メッセージ内に埋め込まれたメッセージは、一覧には出ますがメッセージとしては展開しません。RTF 圧縮された本文(PR_RTF_COMPRESSED)は展開しないため、プレーンテキストにも HTML にも本文が無く RTF だけのメッセージでは本文が空になります。暗号化・署名済みの S/MIME も復号しません。

よくある質問

.msg ファイルとは何ですか?
Outlook のメッセージ1通をファイルとして保存したもので、本文・ヘッダ・添付がすべて1ファイルに詰め込まれています。標準的なメール形式ではなく、実体は複合ファイル — Microsoft が .doc や .xls に使ったのと同じコンテナ — なので、他のメールソフトでは開けません。
Outlook がインストールされている必要はありますか?
ありません。このビューアはブラウザ内でファイル構造を直接読むので、Outlook を一度も入れたことのない環境でも動きます。
メールはどこかにアップロードされますか?
されません。ファイルはブラウザ内で読み取られ、一部たりともサーバーに送られません。開発者ツールの Network タブを開いたまま使えば確認できます。
添付ファイルは取り出せますか?
取り出せます。すべての添付が本来のファイル名とサイズで一覧表示され、個別に、あるいはブラウザ内で組み立てた ZIP でまとめてダウンロードできます。
他のツールだと日本語の添付ファイル名が文字化けするのはなぜですか?
添付のファイル名は複数の MAPI プロパティに入っており、古い短い方はコードページ依存で切り詰められていることがあります。このビューアは Unicode の長いファイル名を優先するので、日本語などの非ラテン文字もそのまま保持されます。
.msg と .eml の違いは?
.eml は標準的な MIME メッセージで、テキストエディタでも中身が読めます。.msg は Outlook 独自のバイナリコンテナです。持ち運べる形で保存したいなら .eml、送られてきたのが .msg ならこのビューアを使ってください。
開けないメッセージはありますか?
本文が RTF 圧縮でしか存在しない場合は本文が空になります。メッセージ内に埋め込まれたメッセージは展開せず、暗号化・署名済みの S/MIME も復号しません。