win32comの入手
download
現在の最新版はgithubからのみダウンロード可能
https://github.com/mhammond/pywin32/releases
ただし、このexeを使う方法ではvirtualenvと両立できない。以下を参照して、pipでインストールした。
https://stackoverflow.com/questions/14913607/how-to-install-win32com-module-in-a-virtualenv
(venv) C:\Users\ikedak2\PycharmProjects\Outlook-Analysis>pip install pypiwin32
Collecting pypiwin32
使い方
Inboxを取得する。Indexで取得するらしいが、どのフォルダがどのインデックスなのかを確認する方法は調べても見つけられず。とりあえずはInboxは6で確定らしいので、そこを起点にする。
import win32com.client
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
そこから先はFoldersというinterfaceを使ってフォルダ名でアクセス可能。
folders = inbox.Folders
devopsFolder = folders('0_標準化関係').folders('0-22_DevOps')
Folderインターフェースはnameというメンバーをもつので(この辺の言葉遣いは正しいか不明)、一覧を出すには、
for folder in folders:
print('Name: ' + folder.name)
フォルダ内のメッセージにアクセスするには、Itemsというインターフェースを使う。
messages = devopsFolder.Items
for message in messages:
print('Subject: ' + message.subject)
print('Sender: ' + message.sendername)
print('Size: ' + message.subject)
print('ReceivedTime: ' + str(message.receivedtime))
print('Body: ' + message.body)
receivedtimeはdatetimeで出力されるので、Stringにして出力している。
アイテムの添付ファイルを保存するには、attachmentsというインターフェースを使う。
for message in messages:
if message.attachments.count is not 0:
for attachment in message.attachments:
print(str(attachment))
attachment.SaveASFile('C:\\temp\\' + str(attachment))
添付の有り無しは添付の個数が0でないことで判別している。
参考情報
各オブジェクトで指定できるプロパティ等はこちらを参考にする。
https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.mailitem_properties.aspx
添付ファイルの取得方法
https://hackerpython.wordpress.com/2015/09/29/how-to-download-email-attachments-from-outlook/