記事内に広告が含まれています。

【Python】Outlookメールから添付ファイルを取得する方法

Python

メールで届いた添付ファイルを、Pythonで取得する方法を紹介します。

今回は、WindowsのクラシックOutlookを対象に、受信トレイのメールから添付ファイルを取得し、PCのフォルダに保存します。

Outlookに届いたメールって、Pythonから直接扱えるんだ?

クラシックOutlookなら、pywin32を使ってメールや添付ファイルを操作できるよ

投稿者
もも

40代・大阪の女性フリーランスSE。
業務効率化・自動化の仕事をしています。
最近はUiPathを中心に、Pythonや生成AIにも挑戦中。
効率化の事例や学んだことなど発信しています。

ももをフォローする

今回の準備

Outlookの操作には pywin32 を使用します。事前にインストールが必要です。

python -m pip install pywin32

Pythonコード

以下が、今回使用するコードです。

from pathlib import Path
import win32com.client

# 添付ファイルの保存先
save_folder = Path(__file__).resolve().parent / "請求書"

# Outlook受信トレイに接続
outlook = win32com.client.gencache.EnsureDispatch("Outlook.Application")
inbox = outlook.GetNamespace("MAPI").GetDefaultFolder(win32com.client.constants.olFolderInbox)

# 対象フォルダのメールを順番に処理
for mail in inbox.Items:

  # 添付ファイルを取得して保存
    attachment = mail.Attachments.Item(1)
    file_name = Path(attachment.FileName).name
    save_path = save_folder / file_name
    attachment.SaveAsFile(str(save_path))

コードポイント

① Outlookに接続する

win32com.client.gencache.EnsureDispatch("Outlook.Application")

PythonからクラシックOutlookを操作するために、pywin32 ライブラリを使用しています。

EnsureDispatch() を使うことで、Outlookのオブジェクトを取得し、メールやフォルダを操作できます。

② 受信トレイのメールを取得する

GetDefaultFolder(win32com.client.constants.olFolderInbox)

このコードで、Outlookの既定の受信トレイを取得します。

③ 添付ファイルを取得して保存する

attachment = mail.Attachments.Item(1)

メールの添付ファイルを取得します。

Outlookの Attachments コレクションは1から始まるため、Item(1) で最初の添付ファイルを取得できます。

0ではなく1から始まるので注意

取得した添付ファイルは、次のコードで指定したフォルダに保存します。

attachment.SaveAsFile(str(save_path))

SaveAsFile() は、Outlookの添付ファイルを指定したパスに保存するメソッドです。

今回は、Pythonファイルと同じ場所にある「請求書」フォルダへ保存しています。

まとめ

今回は、Pythonの pywin32 を使って、クラシックOutlookの指定フォルダから添付ファイルを取得する方法を紹介しました。

メールの取得と添付ファイルの保存を組み合わせることで、毎回手動でダウンロードする作業の効率化につなげられます。