PythonでMSGファイルを解析する方法
aspose-email-foss for Python は、Microsoft Office の依存関係なしで Outlook MSG ファイルを読み取るための純粋な Python API を提供します。ファイルを MapiMessage オブジェクトにロードして、すべてのメッセージ データにアクセスします。
ステップバイステップ ガイド
ステップ 1: パッケージをインストールする
pip install aspose-email-fossPython 3.10以降が必要です。
ステップ 2: MapiMessage クラスをインポート
from aspose.email_foss.msg import MapiMessageステップ 3: MSG ファイルをロード
msg = MapiMessage.from_file("message.msg")不正なファイルの寛容なパースを行うには、strict=False を渡してください:
msg = MapiMessage.from_file("message.msg", strict=False)ステップ 4: メッセージ プロパティにアクセス
print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html[:200] if msg.body_html else 'None'}")
print(f"Message Class: {msg.message_class}")ステップ5:添付ファイルの一覧表示
for att in msg.iter_attachments_info():
name = att.storage_name
is_embedded = att.is_embedded_message
print(f"Attachment: {name}, embedded={is_embedded}")ステップ 6: 低レベル CFB 構造の検査
from aspose.email_foss.cfb import CFBReader
reader = CFBReader.from_file("message.msg")
print(f"Directory entries: {reader.directory_entry_count}")
for entry in reader.iter_streams():
print(f" Stream: {entry}")
reader.close()一般的な問題と対処法
CFBError 読み込み中
ファイルは有効なCFBコンテナではありません。実際のOutlook MSGファイルであり、EMLではないことを確認してください。
本文は空ですが、HTML本文には内容があります
一部のメッセージはコンテンツをHTMLのみで保存します。msg.body が None を返すときに msg.body_html を確認してください。
検証警告
ロードされたファイルのコンプライアンス警告のタプルを見るには、msg.validation_issuesにアクセスしてください。
よくある質問 (FAQ)
EML ファイルを読み取れますか?
直接はできません。ライブラリは MSG (CFB) フォーマットを処理します。まず EML コンテンツを EmailMessage オブジェクトに変換し、次に MapiMessage.from_email_message() を使用してください。
読み込み時にすべての添付データがメモリに読み込まれますか?
いいえ。添付メタデータはオンデマンドで読み取られます。軽量イテレーションには iter_attachments_info() を使用してください。
スレッドセーフですか?
各MapiMessageインスタンスは独立しています。別々のインスタンスからの同時読み取りは安全です。