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