在 Windows 11 中通过 Outlook 使用 Python 发送电子邮件(新)

问题描述 投票:0回答:1

我正在尝试在 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 中修复此问题吗?。

python email outlook win32com office-automation
1个回答
0
投票

相反,它会安装某种(可能是 webview?)版本的 Outlook,称为“Outlook New”。

您走在正确的道路上。新的 Outlook 是一个渐进式 Web 应用程序,不公开任何 COM 组件。无法在本机 shell 中自动化此类 Web 应用程序。相反,您可以考虑使用 Graph API 来完成您的任务。请参阅使用 Microsoft Graph API 了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.