PythonでOutlookのメールを取得する

PythonでOutlookのメールを取得する
スポンサーリンク
スポンサーリンク

業務効率化・自動化の事例として、PythonでOutlookを操作してフォルダ名やメール本文を取得する方法を解説します。

Pythonスクリプトを実行するPCにOutlookがインストールされている必要があります。

スポンサーリンク

使用ライブラリ・モジュール

PythonでOutlookを操作するには pywin32 ライブラリを使用します。

その他のWindowsアプリケーションもこのライブラリで操作できます。
・関連記事:PythonでPowerpointファイル(pptx)をPDFに変換する

ライブラリ :pywin32(公式ドキュメント
インストール:必要
ライブラリ :pandas (公式ドキュメント
インストール:必要
モジュール :datetime(公式ドキュメント
インストール:不要

インストール

pipコマンドでpywin32,pandasライブラリをインストールします。
・関連記事:Pythonライブラリのインストール(pipの使い方)

python -m pip install pywin32 pandas

Successfully installed ・・・・と表示されればインストールは成功です。(依存関係のある他のライブラリも同時にインストールされます。)

Outlookからメール情報を取得

受信トレイのフォルダ名とメッセージ数を取得

受信トレイにTestA, TestBのフォルダが存在している構成で、フォルダ名と保存されているメッセージ数を取得します。GetDefaultFolder()の引数はMicrosoft公式ドキュメントを参照してください。

Outlook

メールを取得

受信トレイにあるフォルダを指定して、受信日時・送信元アドレス・件名・メール本文の取得を行い項目毎に整理します。

ReceivedTime'2021-12-12 03:26:43+00:00' のようなtimezone付きのデータになるため、str(message.ReceivedTime)[:-6]として後方6文字のtimezone情報を削除してからpd.to_datetimePandas Series型に変換しています。
・参考記事:PandasでSeries, DataFrameを作成する

df_mailは以下のようなデータフレームになります。

データフレーム

データフレームをExcelに書き込む方法は以下の記事を参考にしてください。
・参考記事:pandasでExcelファイルの書き込み(to_excel)

指定した時間帯のメールを抽出

データフレームの日時データをset_indexでインデックスに指定することで、簡単に日時範囲指定による抽出ができます。

PythonでOutlookを操作してメールを取得する方法を解説しました。
ぜひ活用して業務効率化を進めてください。

Pythonでの自動化事例として以下の記事も参考にしてみてください。
・関連記事:Pythonでメールを自動送信する
・関連記事:PythonでPowerpointファイル(pptx)をPDFに変換する
・関連記事:PythonでPDFのテキストを抽出する(PyMuPDF)