我正在尝试自动化一项任务,其中将根据 Excel 文件的值自动发送 Outlook 电子邮件。但是,当我使用任务计划程序时,发送到电子邮件选项不起作用。
当我尝试手动启动 VBScript 文件或从 Excel 运行宏时,它工作正常。调试期间,
Set MyOutlook = New Outlook.Application
突出显示
Dim MyOutlook As Outlook.Application
Set MyOutlook = New Outlook.Application
Dim MyMail As Object
Set MyMail = MyOutlook.CreateItem(olMailItem)
MyMail.To = "[email protected]"
MyMail.CC = "[email protected]"
MyMail.Subject = "Sample Alert"
MyMail.Body = "Hello Team," & vbNewLine & _
" " & vbNewLine & _
"Kindly check this Alert" & vbNewLine & _
" " & vbNewLine & _
"Thanks!" & vbNewLine & _
" " & vbNewLine & _
"Surname"
首先,Microsoft 目前不建议也不支持从任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)实现 Microsoft Office 应用程序的自动化,因为 Office 可能会当 Office 在此环境中运行时,会表现出不稳定的行为和/或死锁。
如果您正在构建在服务器端上下文中运行的解决方案,则应尝试使用可安全执行无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用服务器端解决方案中的 Office 应用程序,该应用程序将缺乏许多成功运行所需的功能。此外,您还将面临整体解决方案稳定性的风险。请阅读Office 服务器端自动化的注意事项 文章了解更多相关信息。
如果您正在处理 Exchange,您可以考虑使用 EWS、Graph API。
还要确保执行脚本时 Outlook 未运行。 Outlook 是单例,这意味着系统上只能运行一个实例。如果它已经在不同的安全上下文下运行,您的代码将无法使用
New
运算符获取正在运行的实例。