web-dev-qa-db-ja.com

python win32com outlookを使用したメール機能の読み取りを明確に文書化

Win32comを介したOutlookの相互作用をよりよく理解しようとしています。現在の調査から、win32comを使用して電子メールを効果的に読むことができる明確なドキュメントを見つけることができませんでした。これはユーザーによるかなり定期的な感情のようです。したがって、次の情報と要求が来ます。

誰かできますか。

1。明確なドキュメントの場所へのリンクを提供します(存在する場合)

2。以下を展開

以下は、他の人のコードを読むことに基づいて私が見つけた現在の機能です。

以下のコードを使用してください。

import win32com

Outlook=win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

inbox=Outlook.GetDefaultFolder(6)

messages=inbox.Items

for message in messages:
    attachments = message.attachments

    for attachment in attachments:
        pass

上記で使用したオブジェクトには、私が知っている次の機能があります。

受信トレイ-

.Folders
.Items

メッセージ-

.GetFirst()
.GetLast()
.GetNext()
.GetPrevious()
.Attachments

メッセージ-

.Subject
.Body
.To
.Recipients
.Sender
.Sender.Address

添付ファイル-

.item()
.Count

添付ファイル-

.filename

さらに機能がわかっている場合は、回答にこれを追加してください。

44
Phoenix

アプリケーションリファレンスのビジュアルベーシックは、あなたの友人です。このリンクから始めてみてください...

Interop Outlook Mailitem Properties

たとえば、メッセージにはおそらく上にリストしたものよりも追加のプロパティがあることがわかります。例えば。

  • message.CC
  • message.Importance
  • message.LastModificationTime
26
Genome

「受信トレイ」だけでなく、デフォルトのフォルダにどのようにアクセスするのか疑問に思っている人のために、リストを示します。

3  Deleted Items
4  Outbox
5  Sent Items
6  Inbox
9  Calendar
10 Contacts
11 Journal
12 Notes
13 Tasks
14 Drafts

さらにあります(リマインダー、同期エラーなど)。このコードでリスト全体を取得できます( John Cookのソリューション to Folders):

import win32com
Outlook=win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
for i in range(50):
    try:
        box = Outlook.GetDefaultFolder(i)
        name = box.Name
        print(i, name)
    except:
        pass

リスト全体をここに貼り付けているのは、私のものがポーランド語であり、あまり役に立たないからです。

19
pajonk

フォルダーのナビゲートにも何かを追加すると思いました-これはすべて上記のMicrosoftのドキュメントから派生したものですが、特に受信トレイを除くOutlookフォルダー構造のどこかに移動しようとしている場合は、ここにあると便利です。

foldersを使用してフォルダコレクションをナビゲートできます。この場合、GetDefaultFolderの後にGetNamespaceがないことに注意してください(そうしないと、おそらく受信トレイになります)。

Outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace('MAPI')
folder = Outlook.Folders[1]

番号は、アクセスするフォルダーのインデックスです。そこにあるサブフォルダーの数を確認するには:

folder.Count

さらにサブフォルダーがある場合は、別のFoldersを使用してさらに深くすることができます。

folder.Folders[2]

Foldersはサブフォルダーのリストを返すため、現在のディレクトリ内のすべてのフォルダーの名前を取得するには、クイックループを使用できます。

for i in range(folder.Count):
    print (folder[i].Name)

各サブフォルダーには.Itemsメソッドを使用して、電子メールのリストを取得します。

5
John Cook

すべてのライブOutlookオブジェクトとそのデータを OutlookSpy で見ることができます。

MailItemオブジェクトのプロパティ、メソッド、およびイベントは https://msdn.Microsoft.com/en-us/library/office/ff861332.aspx で完全に文書化されています