MHTML ファイル形式とは?
.mhtml ファイル(.mht 拡張子でも保存されます)は、Web ページ全体を 1 つのポータブルなドキュメントにまとめる MIME HTML Web アーカイブです。ページの .html マークアップと、すべての画像、スタイルシート、スクリプトをパッケージ化し、各リソースを同じファイル内の個別の MIME パートとして保存します。
この形式は、.eml メールファイルで使用されているものと同じマルチパート メッセージ構造を借用しています。埋め込まれたリソースは Base64 または quoted-printable でエンコードされており、バイナリ アセットをプレーンテキストのコンテナ内で転送できます。バイナリのマジックナンバーは存在しないため、.mhtml ファイルは任意のテキスト エディタで開くことができます。ファイルの先頭は、MIME-Version: 1.0、Content-Type: multipart/related; boundary=...、Subject:、Date: といったメール形式のヘッダーで始まります。
Internet Explorer が「Web アーカイブ、単一のファイル (.mht)」保存オプションを通じてこの形式を普及させました。現在では、Google Chrome(v74 以降)、Microsoft Edge(Chromium ベース)、Opera がすべて、ページを .mhtml として保存することをネイティブにサポートしています。Microsoft Word もこの形式のドキュメントを開いたり、エクスポートしたりできます。
macOS および iOS では、Safari はデフォルトで代わりに .webarchive 形式を使用します。Firefox はページを .mhtml として保存することをネイティブにサポートしていませんが、ブラウザ拡張機能でその機能を補完できます。Android ブラウザのサポート状況は依然として一貫していません。
- Chrome または Edge でページを
.mhtmlとして保存するには: 「ファイル」→「名前を付けてページを保存」→「ウェブページ、完全」 - 生の構造を検査するには: 任意のプレーンテキスト エディタで開きます。すべての MIME 境界とヘッダーが読み取り可能です。
セキュリティと安全性
リスク: MEDIUM.mhtml には、JavaScript を含む元のページの内容がすべて埋め込まれており、ブラウザでファイルを開いたときに実行される可能性があります。そのため、信頼できないソースからの MHTML は、信頼できない Web ページと同様に扱ってください。予期しないファイルは開かず、安全に閲覧するために(アクティブなスクリプトを削除する)PDF への変換を検討してください。また、MHTML ファイルはフィッシングにも悪用されます。攻撃者は保存されたページの添付ファイルを送信し、URL フィルタを回避するためにローカルで説得力のある偽のログイン フォームを表示させます。資格情報を要求する未承諾の .mht/.mhtml 添付ファイルには注意してください。ファイル自体はディスク上では不活性なテキストですが、リスクはそのスクリプトやフォームがレンダリングされた後の動作にあります。
形式の詳細
概要MHTML ファイルを開くプログラム
技術的詳細
詳細仕様| コンテナ形式 | MIME multipart/related メッセージ - メインの HTML ドキュメントと、すべてのページリソース(画像、CSS、スクリプト)が単一ファイル内の個別の MIME パートとして埋め込まれています |
| ファイル エンコーディング | プレーンな UTF-8 テキスト。バイナリ リソース(画像、フォント)は、各 MIME パート内で Base64 または quoted-printable でエンコードされています |
| ファイル シグネチャ | バイナリのマジックバイトはありません。ファイルは `MIME-Version: 1.0` に続く `Content-Type: multipart/related` というプレーンテキストのメール形式ヘッダーで始まります |
| プライマリ MIME タイプ | `multipart/related`。埋め込まれた各サブリソースは、独自の MIME タイプ(例:`image/jpeg`、`text/css`)を保持します |
| 代替拡張子 | `.mht` - 同一の形式。Internet Explorer の「Web アーカイブ、単一のファイル」保存オプションで使用され、同じアプリケーションでサポートされています |
| サイズのオーバーヘッド | バイナリ アセットを Base64 エンコードすると、元のリソース サイズの合計と比較して、ファイル サイズが約 33 % 増加します |
| パートの境界 | 埋め込まれた各リソースは、トップレベルの `Content-Type: multipart/related; boundary=...` ヘッダーで宣言された一意の境界文字列によって区切られます |
| ブラウザの保存サポート | Google Chrome (v74+)、Microsoft Edge (Chromium)、Opera はネイティブにページを `.mhtml` として保存できます。Firefox はサードパーティの拡張機能が必要です |
| スクリプトのオリジン | `.mhtml` ファイル内のスクリプトは、Chromium ベースのブラウザでは `null` オリジンで実行されます。CORS は、ページが行うクロスオリジン ネットワーク リクエストをブロックします |
| Microsoft Office のサポート | Microsoft Word および Excel は、MIME コンテナ内に Office XML マークアップを埋め込むことで、ファイルを `.mhtml` として開いたり保存したりできます |
| 検査可能性 | 任意のプレーンテキスト エディタで完全に人間が読み取ることができます。MIME パート ヘッダー、`Content-Location` URL、および Base64 エンコードされたデータはすべてテキストとして表示されます |
| オフライン リソースの処理 | 保存時にキャプチャされたリソースは埋め込まれます。保存中に取得されなかった外部 URL は `Content-Location` によってのみ参照され、オフラインでは利用できません |
| 文字セットの宣言 | HTML パートのエンコーディングは、MIME の `Content-Type` ヘッダーと HTML の `<meta charset>` タグの両方で宣言されます。UTF-8 が標準です |
| macOS/iOS での代替 | Apple Safari および iOS WebKit は、ページを `.mhtml` ではなく `.webarchive`(バイナリ plist 形式)として保存するため、クロスプラットフォームでの共有には変換が必要な場合があります |
| メール形式との関係 | 構造的にメール メッセージ(RFC 2822)と同一です。`.mhtml` ファイルは `.eml` に名前を変更して、多くのメール クライアントで開くことができます |
| リリース日 | RFC 2557 (1999); popularized by Internet Explorer's 'Web Archive, single file (.mht)' |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.rfc-editor.org |
MHTML の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。MHTML ファイルについて最初の質問をしてみましょう。