python 使用任务管理器通过win32com.client运行Outlook

3phpmpom  于 11个月前  发布在  Python
关注(0)|答案(2)|浏览(120)

我有一个预定的任务(Python脚本)在Windows任务管理器,每天早上检查一个特定的电子邮件,并下载附件.我一直在使用这个任务约一个月,它从来没有打破.但今天我发现,该任务无法建立连接到Outlook与win32com.client.
当任务运行时,它会打开命令行,然后自动关闭,什么也不运行。如果我直接在命令行中运行python脚本,它会运行得很好。
下面是python脚本在任务调度器中运行时卡住的行。

outlook = win32.Dispatch("Outlook.Application").GetNamespace("MAPI")

字符串

pbwdgjma

pbwdgjma1#

Microsoft目前不建议也不支持从任何无人值守的非交互式客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为Office在此环境中运行时可能会出现不稳定的行为和/或死锁。
如果要生成在服务器端上下文中运行的解决方案,则应尝试使用可安全执行的组件。或者,应尝试寻找至少允许部分代码在客户端运行的替代方案。如果从服务器端解决方案中使用Office应用程序,则应用程序将缺乏成功运行所需的许多功能。此外,您将在整体解决方案的稳定性方面承担风险。
Considerations for server-side Automation of Office文章中阅读更多关于它的信息。
作为一种解决方法,您可以自由使用Outlook所基于的低级API-扩展扩展插件或围绕此API的任何其他第三方 Package ,如Redemption。如果您仅处理Exchange,您也可以考虑使用EWS,请参阅Start using web services in Exchange了解更多信息。

f45qwnt8

f45qwnt82#

在task scheduler中取消点击“with highest privilege”解决了这个问题。另外,我在我的python脚本前面添加了一段代码,这样它就可以在每次运行时清除python临时文件夹。

相关问题