Python com#U错误:(-2147221005,';无效的类字符串';,无,无)

Python com#U错误:(-2147221005,';无效的类字符串';,无,无),python,outlook,com,Python,Outlook,Com,我正试图用Python连接Outlook,但下面的一行抛出了com\u错误 outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") 完整的回溯如下所示: --------------------------------------------------------------------------- com_error

我正试图用Python连接Outlook,但下面的一行抛出了com\u错误

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
完整的回溯如下所示:

    ---------------------------------------------------------------------------
com_error                                 Traceback (most recent call last)
c:\users\dipf5\appdata\local\programs\python\python37\lib\site-packages\win32com\client\dynamic.py in _GetGoodDispatch(IDispatch, clsctx)
     88                 try:
---> 89                         IDispatch = pythoncom.connect(IDispatch)
     90                 except pythoncom.ole_error:

com_error: (-2147221005, 'Invalid class string', None, None)

During handling of the above exception, another exception occurred:

com_error                                 Traceback (most recent call last)
<ipython-input-15-a96a5314c4a3> in <module>
----> 1 outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

c:\users\dipf5\appdata\local\programs\python\python37\lib\site-packages\win32com\client\__init__.py in Dispatch(dispatch, userName, resultCLSID, typeinfo, UnicodeToString, clsctx)
     93   """
     94   assert UnicodeToString is None, "this is deprecated and will go away"
---> 95   dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
     96   return __WrapDispatch(dispatch, userName, resultCLSID, typeinfo, clsctx=clsctx)
     97 

c:\users\dipf5\appdata\local\programs\python\python37\lib\site-packages\win32com\client\dynamic.py in _GetGoodDispatchAndUserName(IDispatch, userName, clsctx)
    112         else:
    113                 userName = str(userName)
--> 114         return (_GetGoodDispatch(IDispatch, clsctx), userName)
    115 
    116 def _GetDescInvokeType(entry, invoke_type):

c:\users\dipf5\appdata\local\programs\python\python37\lib\site-packages\win32com\client\dynamic.py in _GetGoodDispatch(IDispatch, clsctx)
     89                         IDispatch = pythoncom.connect(IDispatch)
     90                 except pythoncom.ole_error:
---> 91                         IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
     92         else:
     93                 # may already be a wrapped class.

com_error: (-2147221005, 'Invalid class string', None, None)
---------------------------------------------------------------------------
com_错误回溯(最近一次呼叫上次)
c:\users\dipf5\appdata\local\programs\python37\lib\site packages\win32com\client\dynamic.py in\u GetGoodDispatch(IDispatch,clsctx)
88尝试:
--->89 IDispatch=pythoncom.connect(IDispatch)
90除pythoncom.ole_错误外:
com_错误:(-2147221005,“无效类字符串”,无,无)
在处理上述异常期间,发生了另一个异常:
com_错误回溯(最近一次呼叫上次)
在里面
---->1 outlook=win32com.client.Dispatch(“outlook.Application”).GetNamespace(“MAPI”)
c:\users\dipf5\appdata\local\programs\python\37\lib\site packages\win32com\client\\uuuuuu init\uuuuuuuu.py在调度中(调度、用户名、结果、类型信息、UnicodeToString、clsctx)
93   """
94断言Detostring为None,“这已被弃用并将消失”
--->95调度,用户名=动态。\u GetGoodDispatchAndUserName(调度,用户名,clsctx)
96 return\uuu WrapDispatch(调度、用户名、结果csid、类型信息、clsctx=clsctx)
97
c:\users\dipf5\appdata\local\programs\python37\lib\site packages\win32com\client\dynamic.py在_GetGoodDispatchAndUserName(IDispatch,userName,clsctx)中
112其他:
113用户名=str(用户名)
-->114返回(_GetGoodDispatch(IDispatch,clsctx),用户名)
115
116 def_GetDescInvokeType(条目,调用类型):
c:\users\dipf5\appdata\local\programs\python37\lib\site packages\win32com\client\dynamic.py in\u GetGoodDispatch(IDispatch,clsctx)
89 IDispatch=pythoncom.connect(IDispatch)
90除pythoncom.ole_错误外:
--->91 IDispatch=pythoncom.CoCreateInstance(IDispatch,None,clsctx,pythoncom.IID_IDispatch)
92.其他:
93#可能已经是一个包装类。
com_错误:(-2147221005,“无效类字符串”,无,无)

任何建议都会有帮助。

系统上似乎找不到Outlook。注意,在运行代码之前,您需要安装Outlook

还不清楚您在何时何地尝试自动化Outlook。本文陈述如下:

Microsoft目前不建议也不支持从任何无人参与、非交互式客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为在该环境中运行Office时,Office可能会表现出不稳定的行为和/或死锁

如果您正在构建一个在服务器端上下文中运行的解决方案,那么您应该尝试使用安全的组件进行无人值守的执行。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果您使用服务器端解决方案中的Office应用程序,那么该应用程序将缺少许多e成功运行所必需的功能。此外,您将面临整体解决方案稳定性方面的风险


是指“Outlook.com”应用程序在HKEY_CLASSES_根目录中找不到。outlook没有安装,或者它是以32位安装的,而您运行的python是64位的,或者您使用的是reverseThank,这很有帮助。我没有在本地安装。现在我想从帐户的文件夹中提取所有数据,例如:收件箱中的邮件数,未读邮件的数量等。有什么好的资源可用于此类命令吗?
文件夹.Items.Count
-文件夹中的电子邮件数量要获取未读邮件的数量,您需要使用
Restrict
Find
/
FindNext
方法。再次感谢。可以给我一些参考资料的链接,在那里我可以得到类似的功能代码吗?