web-dev-qa-db-ja.com

python win32comを使用してサブフォルダを反復処理するOutlook

次のコードを使用して、共有フォルダーの受信トレイとすべての電子メールを取得します。このコードはうまく機能し、最後の電子メールの件名を印刷します。

Outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
recip = Outlook.CreateRecipient("[email protected]")
inbox = Outlook.GetSharedDefaultFolder(recip, 6)
messages = inbox.Items
message = messages.GetLast()
print (message.Subject)

[email protected]のメールボックス([送信済み]など)内の他の親フォルダーにアクセスできますが、受信トレイ内のフォルダーのサブフォルダーまたはそれより深いフォルダーを取得できません。したがって、inbox\subfolder1が必要な場合、どうすればアクセスできますか?重要な場合はOutlook 2013を使用します。私の主な目標は次のことです。

message.Move(inbox\subfolder1)
9
nico

それはできません-OutlookはメインのOSTファイルの共有デフォルトフォルダーをキャッシュします。サブフォルダーはキャッシュされません。問題のメールボックスがデリゲートストアとして追加されている場合、Namespace.FoldersまたはNamespace.Storesを使用して問題のフォルダーを解析できるはずです。

それ以外の場合は、 Redemption とその RDOSession .GetSharedDefaultFolderを使用できます-フォルダーは、すべてのサブフォルダー( RDOFolder .Folders)。

ええ、フォルダ番号を書くのではなく、フォルダの名前としてそれを書くほうがいいです

私のフォルダ階層のように:Outlook_Mails> Inbox> Important

Outlook = win32.com.client.Dispatch("Outlook.Application")
mapi = Outlook.GetNamespace("MAPI")

your_folder = mapi.Folders['Outlook_Mails'].Folders['Inbox'].Folders['Important']
for message in your_folder.Items:
    print(message.Subject)
13
Sir Tesla

これは、同様のタスクを実行するために使用しているコードです。

Outlook = win32com.client.Dispatch("Outlook.Application")
namespace = Outlook.GetNamespace("MAPI")
root_folder = namespace.Folders.Item(1)
subfolder = root_folder.Folders['All'].Folders['Main Folder'].Folders['Subfolder']
messages = subfolder.Items

これにより、「All/Main Folder/Subfolder」フォルダ内のメッセージが検索されます。

6
Jared Goguen

テスラ卿。実際、私はあなたのコードパターンを追跡し、現在のプロジェクトに従って変更しました。以下の標本コードを見つけてください。

import win32com.client
Outlook = win32com.client.Dispatch("Outlook.application")
mapi = Outlook.GetNamespace("MAPI")
FirstFMB = mapi.Folders['FirstFMB'].Folders['Inbox']
SecondFMB = mapi.Folders['SecondFMB'].Folders['Another_folder']

<Hence other loops & operations as per requirement>

ここで、知っておくべきことが1つあります。何らかの種類のFunction Mail Boxesで実行する必要がある場合は、名前をmapi.Folder []の下に置くだけで、フローに進むことができます。

テスラ卿フォルダ番号を使用する代わりに、コードパターンが役に立ちました。

反対に、この手法は、特定の時間枠内でメールの読み取りとアクションを実行するのに役立ちます。

0
Ozzius