通过COM连接到Outlook时出错

Nun*_*ado 9 python outlook win32com

我有以下python代码

o = win32com.client.Dispatch("Outlook.Application")
ns = o.GetNamespace("MAPI")
profile = ns.Folders.Item("Profile Name")
tasks = profile.Folders.Item("Tasks")
print tasks.Items
Run Code Online (Sandbox Code Playgroud)

当我运行它时,脚本崩溃时出现此错误:

Traceback (most recent call last):
  File "start.py", line 47, in <module>
    o = win32com.client.Dispatch("Outlook.Application")
  File "C:\Python27\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 108, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 85, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2146959355, 'Server execution failed', None, None)
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

win32com.client.gencache.EnsureDispatch("Outlook.Application")
Run Code Online (Sandbox Code Playgroud)

不知道该怎么做以及问题是什么

更新:仅当Outlook正在运行时才会发生这种情况,但是发出getActiveObject会因"操作不可用"而崩溃

Dmi*_*nko 9

错误是CO_E_SERVER_EXEC_FAILURE,这很可能意味着Outlook在与您的进程不同的安全上下文中运行.是应用程序以提升的权限运行(以管理员身份运行)?

您的代码何时以及如何运行?

更新2016年6月17日:只需将评论中提到的解决方案发布为更多可见,使用普通用户或使用admin用户同时运行outlook和python代码.


小智 1

尝试将脚本移动到另一个目录并从那里执行它。当我遇到这个问题时,它解决了这个问题,尽管我不确定问题的根本原因(正如 Nuno 所建议的,这似乎是 win32 API 的一个不起眼的错误)。