次のコードを使用して、共有フォルダーの受信トレイとすべての電子メールを取得します。このコードはうまく機能し、最後の電子メールの件名を印刷します。
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)
それはできません-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)
これは、同様のタスクを実行するために使用しているコードです。
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」フォルダ内のメッセージが検索されます。
テスラ卿。実際、私はあなたのコードパターンを追跡し、現在のプロジェクトに従って変更しました。以下の標本コードを見つけてください。
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 []の下に置くだけで、フローに進むことができます。
テスラ卿フォルダ番号を使用する代わりに、コードパターンが役に立ちました。
反対に、この手法は、特定の時間枠内でメールの読み取りとアクションを実行するのに役立ちます。