Python win32com:读取多个 Outlook 收件箱

Dav*_*d G 4 python outlook win32com python-3.x

我想获取通过两个指定邮件地址发送的所有电子邮件的 SenderEmailAddress:123@abc.com 和 456@def.com,它们位于我计算机上的 Outlook 应用程序中,重点是列出所有将要发送的邮件发件人保存在一个 csv 文件中。

这些邮箱的架构是这样的:

123@abc.com

  • -> 收件箱

&

456@def.com

  • -> 收件箱

我想从两个邮箱中读取收件箱文件夹并存储两个文件夹中的 SenderEmailAddress

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
Run Code Online (Sandbox Code Playgroud)

我发现对于某些人来说,使用它是有效的

inbox = outlook.GetDefaultFolder(6).Folders[1] # To access 123@abc.com Inbox
inbox = outlook.GetDefaultFolder(6).Folders[2] # To access 456@def.com Inbox
Run Code Online (Sandbox Code Playgroud)

但就我而言,它只会让我进入 Inbox 内的两个子文件夹,仅此而已,我根本无法访问第二个邮箱。我有可能通过使用来检测这些邮箱

for folder in outlook.Folders: 
    print(folder.Name)
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题并最终访问我的第二个邮件地址,如果有人能够帮助我,那就太好了。

谢谢 !

dre*_*c4s 5

发生这种情况是因为GetDefaultFolder(6)正在引用第一个Inbox,因此.Folders[1]并且.Folders[2]只会让您首先访问相同的子文件夹Inbox

您可以通过像这样指定它们来访问这些收件箱:

inbox = outlook.Folders('123@abc.com').Folders('Inbox') # To access 123@abc.com Inbox
inbox = outlook.Folders('456@def.com').Folders('Inbox') # To access 456@def.com Inbox
Run Code Online (Sandbox Code Playgroud)