使用任务计划程序通过 win32com.client 运行 Outlook

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

我在 Windows 任务计划程序中有一个计划任务(python 脚本),每天早上检查特定电子邮件并下载附件。我已经使用这个任务大约一个月了,它从未中断过。但是今天我发现任务无法与win32com.client建立与Outlook的连接。

当任务运行时,它会调出命令行,然后自动关闭,什么也没有真正运行。如果我直接在命令行中运行 python 脚本,效果会很好。

下面是 python 脚本在任务计划程序中运行时卡住的行。

outlook = win32.Dispatch("Outlook.Application").GetNamespace("MAPI")
python outlook win32com windows-task-scheduler
2个回答
0
投票

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

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

Office 服务器端自动化注意事项文章中了解更多相关信息。

作为解决方法,您可以自由使用 Outlook 所基于的低级 API - 扩展 MAPI 或围绕此 API 的任何其他第三方包装器,例如 Redemption。如果您仅处理 Exchange,您也可以考虑使用 EWS,请参阅开始在 Exchange 中使用 Web 服务了解更多信息。


0
投票

通过取消任务计划程序中的“具有最高权限”解决了这个问题。另外,我在 python 脚本前面添加了一段代码,以便每次运行时都会清除 python 临时文件夹。

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