Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用任务调度器(Python)通过win32com.client运行Outlook_Python_Windows_Outlook_Win32com_Taskscheduler - Fatal编程技术网

使用任务调度器(Python)通过win32com.client运行Outlook

使用任务调度器(Python)通过win32com.client运行Outlook,python,windows,outlook,win32com,taskscheduler,Python,Windows,Outlook,Win32com,Taskscheduler,我在Windows任务计划程序中有一个计划任务(python脚本),每天早上检查一封特定的电子邮件并下载附件。我已经使用这个任务大约一个月了,它从来没有坏过。但今天我发现该任务无法通过win32com.client与Outlook建立连接。当任务运行时,它将打开命令行,然后自动关闭,但实际上什么也不会运行。不过,如果我直接在命令行中运行python脚本,效果会很好。 下面是python脚本在任务调度器中运行时卡住的一行 outlook = win32.Dispatch("Outlook

我在Windows任务计划程序中有一个计划任务(python脚本),每天早上检查一封特定的电子邮件并下载附件。我已经使用这个任务大约一个月了,它从来没有坏过。但今天我发现该任务无法通过win32com.client与Outlook建立连接。当任务运行时,它将打开命令行,然后自动关闭,但实际上什么也不会运行。不过,如果我直接在命令行中运行python脚本,效果会很好。 下面是python脚本在任务调度器中运行时卡住的一行

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

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

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

在文章中阅读更多关于这方面的内容


作为一种解决方法,您可以自由使用Outlook基于的低级API-Extended MAPI或围绕此API的任何其他第三方包装(如Redemption)。如果您只处理Exchange,也可以考虑使用EWS,请参阅更多信息。

< P>它通过在任务调度器中取消“最高权限”来解决。另外,我在python脚本前面添加了一段代码,以便每次运行时它都会清除python临时文件夹