我正在尝试在 Windows 11 计算机中发送电子邮件,其中使用的 Python 代码之前在另一台安装了 Outlook 的 Windows 10 计算机上运行。
出于某种原因,在 Windows 11 中,似乎没有安装“真正的”Outlook 桌面应用程序...相反,它安装了某种(可能是 webview?)版本的 Outlook,它称之为“Outlook New”。
无论如何,问题是,下面之前有效的原始代码不再有效。
import win32com.client as win32
outlook = win32.Dispatch("Outlook.Application")
mail = outlook.CreateItem(0)
mail.Subject = "Email Subject"
mail.Body = "Email body,Python win32com and Outlook."
mail.To = "[email protected]"
mail.Send()
回溯失败
Traceback (most recent call last):
File "C:\Users\admin\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\win32com\client\dynamic.py", line 84, in _GetGoodDispatch
IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221005, 'Invalid class string', None, None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File ".\test_mail.py", line 4, in <module>
outlook = win32.Dispatch("Outlook.Application")
File "C:\Users\admin\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\win32com\client\__init__.py", line 118, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch, userName, clsctx)
File "C:\Users\admin\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\win32com\client\dynamic.py", line 104, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "C:\Users\admin\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\win32com\client\dynamic.py", line 87, in _GetGoodDispatch
IDispatch, None, clsctx, pythoncom.IID_IDispatch
pywintypes.com_error: (-2147221005, 'Invalid class string', None, None)
这表明我似乎很难找到“真正的”Outlook 应用程序。
任何人都可以建议在 Windows 11 中修复此问题吗?。
相反,它会安装某种(可能是 webview?)版本的 Outlook,称为“Outlook New”。
您走在正确的道路上。新的 Outlook 是一个渐进式 Web 应用程序,不公开任何 COM 组件。无法在本机 shell 中自动化此类 Web 应用程序。相反,您可以考虑使用 Graph API 来完成您的任务。请参阅使用 Microsoft Graph API 了解更多信息。