Python & Outlook COM:获取元素时出错

Python & Outlook COM : Error on getting elements

所以,我正在尝试实现一个简单的 Python Outlook 客户端检索器,以便稍后在 Node.JS API 中使用它。这是我的实际代码:

import win32com.client
import requests

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
folder = outlook.Folders[0]
i = folder.Count()
print(i)

但是我得到这个错误:

File ".\MAPI_script\outlook2013_retrieveInbox.py", line 6, in <module>
i = folder.Count()
File "C:\Users\zehav\AppData\Local\Programs\Python\Python36-32\lib\site-packages\win32com\client\dynamic.py", line 527, in __getattr__
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.Count

每次尝试获取 Outlook 文件夹时都会出现此错误。我还在之前的 post 上尝试编写代码:Reading e-mails from Outlook with Python through MAPI

还有这个: Clearly documented reading of emails functionality with python win32com outlook

在所有这些情况下,我都遇到了类似的错误,即 COM 对象似乎无法在 Outlook 中访问任何内容。

如果有人知道会发生什么......?

尝试正确的文件夹索引:

收件箱

文件夹=outlook.Folders[6]

其他文件夹:

3 个已删除项目

4 个发件箱

5 件已发送物品

6 个收件箱

9 日历

10 个联系人

11 期刊

12 条笔记

13 个任务

14 草稿

这个递归函数帮助我看到了 Python 中的文件夹名称。

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

def see_folders(outlook_object, level=0, trail=''):
    level += 1

    for i in range(outlook_object.Folders.Count):

        if trail == '':
            trail = outlook_object.Folders[i].Name
        elif i == 0:
            trail = trail + '>' + outlook_object.Folders[i].Name # add name to trail
        else:
            trail = trail[:-len('>' + outlook_object.Folders[i-1].Name)] # remove name from previous iteration
            trail = trail + '>' + outlook_object.Folders[i].Name
        #print(trail)
        print('  '*(level-1) + 'Level:' + str(level) + ' Number:' + str(level) + '.' + str(i + 1) + ' Subfolders:' + str(outlook_object.Folders[i].Folders.Count) + ' Path:' + trail)
        if outlook_object.Folders[i].Folders.Count > 0:
            see_folders(outlook_object.Folders[i], level, trail)
        else:
            pass
    return

see_folders(outlook)