.msg形式のOutlookのメールメッセージの本文を読み込む方法

pywin32を使って Outlook を操作し、.msg形式のOutlookのメールメッセージの本文を読み込み、簡単に情報を抽出することができます。

images/cards/outlook.webp

目次

0. Introduction

社内では Outlook を使用していて、大量のメールメッセージの本文の中から何か情報を抽出したい場合、Python を使って簡単に抽出することができます。

  • 対象となる読者
    • Outlook のメールメッセージから情報を抽出したい方
  • 本記事の価値
    • .msg 形式の Outlook のメールメッセージの本文を読み込む方法
  • 前提
    • Python 動作環境
    • pywin32 のインストール
pip install pywin32

1. Outlook のメールメッセージの本文を読み込む例

pywin32 は、Python から WindowsAPI へのアクセスを提供してくれます。COM を使って Outlook を操作します。pywin32 を使えば、Excel も同様に処理することができます。Outlook が PC にインストールされていない場合は試していませんが、NoneType が返ってくると予想されます。

import win32com.client
import re
import glob
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
path = "(読み込みたいファイル群へのフォルダパス)"

f = open('(本文で抽出したデータを書き出すテキスト).txt', 'w')

for file in glob.glob(path + '*.msg'):
    mail = outlook.OpenSharedItem(file)
    # ここでは、以下のフォーマットを本文から抜き出しています.
    ips = re.findall(r'remip=\d+.\d+.\d+.\d+', mail.body)
    for ip in ips:
        f.write(ip + '\n')

f.close()