Outlook の .msg ファイルを開く

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

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

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

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

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


MSG ファイルの開き方 — Outlook が無くても中身を読む

.msg は Outlook がメール 1 通をそのまま保存したファイルです。担当者が「このメールを転送します」とドラッグしてそのまま添付したときや、証拠として保存したメールを渡されたときに届きます。中には本文だけでなく、差出人・宛先・送信日時、そして元のメールに付いていた添付ファイルまで丸ごと入っています。

ダブルクリックしても開かないのは、.msg が Outlook 専用の形式だからです。Outlook が入っていない PC、Mac、スマートフォンでは「このファイルを開く方法を選んでください」と聞かれるだけで終わります。ファイルが壊れているわけではありません。このページは、その .msg をブラウザの中で読み、添付ファイルを取り出せる状態にします。

1

.msg ファイルをドロップする

メールに添付されていた .msg を、上の枠にドラッグするかクリックして選びます。Outlook は必要ありません。

2

差出人と日時を確かめる

件名・差出人・宛先・送信日時が最初に出ます。転送されて元の情報が分からなくなったメールでも、ここで元の送信者と日時が分かります。

3

本文を読む

書式付きのメールは整形して表示します。HTML メールも、外部への通信をせずに安全な形にしてから表示します。

4

添付ファイルを取り出す

元のメールに付いていた添付ファイルが一覧で出ます。1 つずつ、またはまとめて ZIP で保存できます。日本語のファイル名もそのまま出ます。

MSG ビューアに .msg をドロップした画面。件名・差出人・宛先・送信日時が並び、その下に本文と添付ファイルの一覧が表示されている。
画面 Outlook が無くてもここまで読めます。添付ファイルはそのまま保存できます。

Outlook が手元にあるなら、.msg をダブルクリックすればそのまま開きます。無い場合の選択肢は 3 つです。1 つはこのページのようなブラウザ内のビューア、1 つは Thunderbird などのメールソフトに読み込ませる方法、もう 1 つは送った相手に「.eml で送り直してほしい」と頼む方法です。急いでいて相手に頼めないとき、あるいは社用 PC にソフトを入れられないときは、ブラウザで済ませるのがいちばん早いはずです。

この 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 なら同じ件名を、保存した PC の Windows コードページで書いたものです。どのコードページかは PR_MESSAGE_CODEPAGE に記録されますが、Outlook が書かないこともあるため、その場合はメールの文字コードとロケールから推定します(ISO-2022-JP で届いた日本語のメールなら Shift_JIS)。日時などの固定長の値は代わりに __properties_version1.0 にまとめられています。
ファイル名の解決順序
添付名は PidTagAttachLongFilename(0x3707)→ PidTagAttachFilename(0x3704)→ PidTagDisplayName(0x3001)の順で採用します。短い方だけを読む実装が、日本語ファイル名を 8.3 形式の文字化けにしてしまう原因です。winmail.dat と同じ罠で、ここでも同じ方法で回避しています。
HTML の本文
PR_HTML はバイナリで、他のテキストと違って Unicode ではなく、メールの文字コード(PR_INTERNET_CPID)のまま入っています。デコードしたうえで DOMPurify の許可リストでサニタイズし、ネットワークから何も読み込めないようコンテンツセキュリティポリシーを設定したサンドボックス iframe 内に描画します。
圧縮 RTF の本文
HTML 本文かテキスト本文が無いときは、圧縮 RTF の本文(PR_RTF_COMPRESSED)を展開して補います(MS-OXRTFCP)。HTML のメールを RTF に包んだものは元の HTML に(MS-OXRTFEX)、それ以外は文字だけになります。RTF が壊れていてほかに本文も無いときは、そう表示します。

対応していない範囲

メッセージ内に埋め込まれたメッセージは、一覧には出ますがメッセージとしては展開しません。圧縮 RTF でしか入っていない本文も表示しますが、リッチテキストで書かれた本文は書式を落として文字だけを表示します。暗号化・署名済みの S/MIME も復号しません。

よくある質問

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