transk’s 翻訳ブログ

翻訳がらみの情報など

win32com で Outlook の受信トレイのメールを読み込む(Python)

Python でメールを操作する練習をしようと思って

ちょっと調べたら

メールサーバーに直接アクセスする方法もあるが

win32com で Outlook を操作できるようなので

とりあえずそれでいじってみた。

メールの送信は誰かが書いたコードをコピペするだけでできたが

メールの受信は

outlook = win32com.client.Dispatch('outlook.application')
mapi = outlook.GetNamespace("MAPI")
inbox = mapi.GetDefaultFolder(6)

 

のようなコードが使われているが

わたしの環境では読み取れない。

folders = inbox.Folders
for folder in folders:
    print('Name: ' + folder.name)

 

というコードを付加してフォルダーを表示してみると

Name: 連絡先候補
Name: スレッド アクション設定
Name: クイック操作設定

と表示される。

読み取りたいフォルダー番号はおそらく 5 なんだけど

フォルダー名を指定してもうまく読み取れない。

なので、ネットで調べたら

英語のページに

別の方法があったので

それでコーディングしてみた。

import win32com.client

# APPの初期化
outlook = win32com.client.Dispatch('outlook.application')
mapi = outlook.GetNamespace("MAPI")

inbox_mails = mapi.Folders['xxx@hotmail.com'].Folders['受信トレイ']

for mail in inbox_mails.Items:
    print('SenderEmailAddress: ', mail.SenderEmailAddress)
    print('SenderName: ', mail.Sender)
    print('Subject: ', mail.subject)
    print('To: ', mail.To)
    print('Cc: ', mail.Cc)
#    print('Bcc: ', mail.Bcc)
    print('ReceivedTime: ', str(mail.receivedtime))
    print('Body: ', mail.body)
    print('Attachments: ', mail.Attachments)
 

 

このコードで読み取ることができた。

わたしは Outlook

プロバイダーのメール、Hotmail、Yahoo メールなどを複数登録してあるので

メールアドレスが最初のフォルダー名となっているようだ。

 

とりあえず、Outlook のメールを受信できるようになったが

やりたいのは受信したメールに返信することで

受信内容を編集すればできないことはないが

何か簡単な方法はないかなといま思案している。