0

早上,我实现了一个每天运行的脚本,它需要检查带有预定参数的电子邮件是否已经到达。

仅当我在计算机上登录时,该脚本才能工作并打开 Outlook。

如果我在未登录机器的情况下运行该过程,则脚本不会与 Outlook 交互(明确不会给出错误)。

我附上代码。

import win32com.client
outlook = win32com.client.Dispatch('outlook.application')
mapi = outlook.GetNamespace("MAPI")
inbox = mapi.GetDefaultFolder(6)
messages = inbox.Items.Restrict("[Unread]=true")
messages = messages.Restrict("[Subject] = 'XXXX')

你能提供支持吗?

4

1 回答 1

1

如果我在未登录机器的情况下运行该过程,则脚本不会与 Outlook 交互(明确不会给出错误)。

Outlook 可能无法识别要在未登录的情况下打开的配置文件。

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

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

在Office 服务器端自动化的注意事项文章中阅读有关此内容的更多信息。

于 2022-01-17T13:44:09.230 回答