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)
所以,我正在尝试实现一个简单的 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)