Outlookのメール(.msg / .eml)をフォルダに保存したはいいけど、本文を1通ずつ開いてコピーするのは地獄…😇
この記事では、フォルダ内の複数メール本文を一括でまとめて抽出→1つのテキストに結合→コピーできる方法を、コマンド中心でわかりやすく紹介します💡📌
「メールをまとめて抽出できたら、次は“探せる状態”にすると仕事が爆速です🚀」
✅この記事でできるようになること(ベネフィット)🌈✨
- 📦 フォルダ内のメール本文を全件まとめて抽出
- 🧾 本文を1つのファイルに結合して管理できる
- 📋 最終的に全文を丸ごとコピーして、ドキュメント化・共有・検索が楽になる
- 🔎 監査・引き継ぎ・ナレッジ化など、**“後で困らない状態”**を作れる
🧠まず確認:ファイル形式で方法が変わるよ🔍📁
✅よくある保存形式🎯
- 📌 .msg:Outlookから「名前を付けて保存」した形式(Windows + Outlook向き)
- 📌 .eml:メール形式の標準(Outlook以外でも扱いやすい)
- ⚠️ .pst:Outlookデータファイル(今回の「フォルダにコピー」方式とは別ルート)
🟦【方法1】.msg を一括抽出する(PowerShell + Outlook)💻📩
✅向いてる人🙋♂️
- Windowsで作業してる🪟
- Outlookがインストールされている📮
- .msg がフォルダに大量にある📦
🟣1つのテキストに結合して保存する(おすすめ)🧾✨
以下を PowerShell に貼り付けて実行します🔧
($folder と $out だけ自分の環境に合わせてOKです✅)
# ===== 設定(ここだけ変更OK)=====
$folder = "C:\MailExport" # .msgが入ってるフォルダ
$out = "C:\MailExport\all_mail_bodies.txt"
# ===== 処理 =====
$ol = New-Object -ComObject Outlook.Application
$session = $ol.Session
# 出力ファイルを初期化(UTF-8)
"" | Out-File -FilePath $out -Encoding utf8
Get-ChildItem -Path $folder -Filter *.msg -File | Sort-Object Name | ForEach-Object {
$path = $_.FullName
# .msgを開く
$item = $session.OpenSharedItem($path)
# 仕切り+メタ情報+本文(プレーンテキスト)
@(
"============================================================"
"FILE: $($_.Name)"
"SUBJECT: $($item.Subject)"
"FROM: $($item.SenderName)"
"RECEIVED: $($item.ReceivedTime)"
"------------------------------------------------------------"
$item.Body
""
) | Out-File -FilePath $out -Append -Encoding utf8
# 後始末
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($item) | Out-Null
}
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($session) | Out-Null
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($ol) | Out-Null
Write-Host "✅ DONE -> $out"
🟣抽出した全文を“そのままコピー”する📋✨
作成された all_mail_bodies.txt を 丸ごとクリップボードへ入れます🧠📎
Get-Content "C:\MailExport\all_mail_bodies.txt" -Raw | Set-Clipboard
🟡.msg がHTMLメールで「本文が空」になる時の対策🛠️⚠️
一部メールは Body が空で、HTMLBody だけに入っている場合があります😵
その場合は本文部分を $item.HTMLBody に差し替えればOKです✅
- ✅ そのままHTMLで出してよければ:
$item.HTMLBody - ✅ HTMLタグを消して綺麗にしたいなら:後述の「整形」へ🧼✨
🟩【方法2】.eml を一括抽出する(Python)🐍📩
✅向いてる人🙋♀️
- .eml 形式で保存されている📁
- Outlookに依存せず処理したい🧩
- HTML/テキストを柔軟に扱いたい🔧
🟣.eml を全件まとめて1ファイルへ🧾✨
import os
from email import policy
from email.parser import BytesParser
folder = r"C:\MailExport"
out = r"C:\MailExport\all_mail_bodies.txt"
def get_body(msg):
# text/plain優先、なければtext/html
if msg.is_multipart():
for part in msg.walk():
if part.get_content_type() == "text/plain":
return part.get_content()
for part in msg.walk():
if part.get_content_type() == "text/html":
return part.get_content()
return ""
return msg.get_content()
with open(out, "w", encoding="utf-8") as wf:
for name in sorted(os.listdir(folder)):
if not name.lower().endswith(".eml"):
continue
path = os.path.join(folder, name)
with open(path, "rb") as f:
msg = BytesParser(policy=policy.default).parse(f)
wf.write("="*60 + "\n")
wf.write(f"FILE: {name}\n")
wf.write(f"SUBJECT: {msg.get('subject','')}\n")
wf.write(f"FROM: {msg.get('from','')}\n")
wf.write(f"DATE: {msg.get('date','')}\n")
wf.write("-"*60 + "\n")
wf.write(get_body(msg) or "")
wf.write("\n\n")
print("✅ DONE ->", out)
🧼抽出した本文を“読みやすく整える”コツ📖✨
🟣あとから困らない整理ルール🧠📌
- 🏷️ 件名・送信者・受信日を付けておく(検索が楽🔎)
- 🧱 区切り線を入れる(メールの境界が明確👀)
- 📁 1ファイルにまとめる(共有・バックアップが簡単📦)
- 🔐 機密情報を扱う場合は出力先と権限に注意(漏えい防止🛡️)
🧯よくあるトラブルと解決策(詰まりポイント)🚧⚙️
🟣PowerShellでOutlookが動かない😵
🟦原因あるある
- Outlook未インストール📮❌
- 32bit/64bitの不整合🧩
- セキュリティ制御や権限不足🔐
🟩対策
- Outlookが起動できるか確認✅
- PowerShellを「管理者」で実行(必要な場合)🛡️
- 可能なら
.emlにしてPythonで処理するのも手💡🐍
🟣本文が空っぽになる😭
🟦原因
- HTMLメールで
Bodyが空(.msgで起きがち)📄❌
🟩対策
.msgはHTMLBodyを使う✅- あるいは
.eml化してPythonで抽出する✅
❓FAQ(絵文字付き)💬✨
❓Q1:抽出した本文を“全部コピー”する最短手順は?📋⚡
✅ .msgなら、本文を1ファイルに出力したあとに
🧷 Get-Content -Raw | Set-Clipboard で一発コピーできます💡
❓Q2:メールの添付ファイルも一緒に取りたい📎🗂️
✅ 可能です🧩
ただし添付抽出は .msg と .eml で方法が変わり、処理も少し長くなるため、本文抽出ができた後に拡張するのが安全です🔧✨
❓Q3:1通ずつ別ファイルに保存もできる?📄📁
✅ できます🙆♂️
結合ではなく「1通=1txt」に出すように変更可能です。運用ルール(監査・引き継ぎ・案件別など)に合わせると後で爆速になります🚀
❓Q4:日本語が文字化けすることがある…🌀
✅ .eml はエンコードが混在しやすいので、Pythonで policy=policy.default を使うのが基本的に安定です🐍✨.msg は Outlook 側が扱うので比較的文字化けしにくい傾向です📮
❓Q5:会社PCでも安全に使える?🏢🛡️
✅ 出力先フォルダの権限・共有設定・バックアップ先を確認すれば安全性が上がります🔐
機密情報が含まれる場合は、暗号化やアクセス制限も検討すると安心です✅✨
🎯まとめ:メール本文の一括コピーは“結合→コピー”が最強💪📩
- 📌 .msgならPowerShell + Outlookが手軽で強い
- 📌 .emlならPythonが柔軟で応用しやすい
- 📌 どちらも「1ファイルに結合」すると、検索・共有・再利用が超楽になる🧠✨



コメント