[英]Accessing Outlook.Application via Python using win32com results in error
我們有一個應用程序,它通過以下代碼片段訪問用戶的 Outlook 帳戶(請參閱最受好評的答案): 通過 MAPI 使用 Python 從 Outlook 中讀取電子郵件
import win32com.client
...
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
它工作了好幾個月,唉,幾天前,它開始在所有組織機器上失敗,同時返回以下錯誤: AttributeError: 'module' object has no attribute 'CLSIDToClassMap'
錯誤來源為:WinPython-32bit-3.4.4.2\\python-3.4.4\\lib\\site-packages\\win32com\\client\\gencache.py
我懷疑這與應用於 Outlook 的安全補丁有關。 我們使用 Office 2010(Outlook 14.0.7173.500 32 位)
互聯網有 2007 年相同問題的痕跡: https : //mail.python.org/pipermail/python-win32/2007-August/006147.html 。
也許問這個人
此屬性錯誤的主要原因是您的 COM 服務器已從后期綁定(動態)轉換為早期綁定(靜態)。
有兩種方法可以解決此問題:
使用動態模塊強制您的代碼以面向后期綁定的方式工作。 使用示例:
"win32com.client.dynamic.Dispatch()" instead of "win32com.client.Dispatch()"
使用駝峰敏感關鍵字作為早期面向綁定的方式。 使用示例:
"excel.Visible()" instead of "excel.VISIBLE()" or "excel.visible()"
或者您也可以從 temp 中刪除 gen_py 文件夾,因為它使 win32com 以早期綁定方式運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.