簡體   English   中英

使用任務計划程序 (Python) 通過 win32com.client 運行 Outlook

[英]Running Outlook through win32com.client using Task Scheduler (Python)

我在 Windows 任務計划程序中有一個計划任務(python 腳本),每天早上檢查一個特定的 email 並下載附件。 我已經使用這個任務大約一個月了,它從未中斷過。 但是今天發現任務無法與win32com.client建立到Outlook的連接。 當任務運行時,它會調出命令行,然后自動關閉,並沒有真正運行。 不過,如果我直接在命令行中運行 python 腳本,效果會很好。 下面是 python 腳本在任務調度程序中運行時卡住的行。

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

Microsoft 目前不推薦也不支持任何無人參與、非交互式客戶端應用程序或組件(包括 ASP、ASP.NET、DCOM 和 NT 服務)的 Microsoft Office 應用程序自動化,因為 Office 可能表現出不穩定的行為和/或死鎖當 Office 在此環境中運行時。

如果您正在構建在服務器端上下文中運行的解決方案,您應該嘗試使用已確保無人值守執行安全的組件。 或者,您應該嘗試找到允許至少部分代碼在客戶端運行的替代方案。 如果您使用來自服務器端解決方案的 Office 應用程序,該應用程序將缺少許多成功運行所需的功能。 此外,您將承擔整體解決方案穩定性的風險。

Office 服務器端自動化的注意事項文章中閱讀有關此內容的更多信息。

作為一種解決方法,您可以自由使用 Outlook 所基於的低級 API - Extended MAPI 或圍繞此 ZDB974238714CA8DE634A7CE1D083A14F 的任何其他第三方包裝器,例如 Redemption。 如果您只處理 Exchange,您也可以考慮使用 EWS,有關詳細信息,請參閱開始在 Exchange 中使用 web 服務

通過在任務計划程序中取消單擊“具有最高權限”來解決此問題。 另外,我在我的 python 腳本前面添加了一段代碼,以便每次運行時都會清除 python 臨時文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM