在Windows Task Scheduler中安排了相同的宏时,通过VBA自动发送的Outlook电子邮件不起作用

时间:2019-07-11 06:23:54

标签: excel vba outlook task scheduler

我有一个宏代码,它将自动发送电子邮件。通过按钮单击完成后,效果很好。 我已经将同一宏安排为通过任务计划程序定期运行。但是邮件处于草稿阶段而不发送。

问题1:如果我在邮件中使用.send,它会要求使用“允许”或“拒绝”选项弹出安全提示

问题2:为避免出现上述弹出窗口,我使用了.display,等待应用程序和sendkeys->通过单击按钮运行时,此方法有效,但通过调度程序运行时,电子邮件仍处于草稿阶段,而不是已发送。

请提供您的评论

1 个答案:

答案 0 :(得分:0)

  

问题1:如果我在邮件中使用.send,它会要求使用“允许”或“拒绝”选项弹出安全提示

这是Outlook中的标准安全提示。在本文中,“安全性”是指所谓的“对象模型防护”,它触发安全提示并阻止对某些功能的访问,以防止恶意程序从Outlook数据中获取电子邮件地址并使用Outlook传播病毒和垃圾邮件。这些提示不能简单地关闭,除非在运行防病毒应用程序的Outlook 2007中。 This page讨论了避免安全提示的策略。

  

问题2:为避免出现上述弹出窗口,我使用了.display,等待应用程序和sendkeys->

所有当前版本的Microsoft Office都经过设计,测试和配置,可以作为最终用户产品在客户端工作站上运行。他们假定交互式桌面和用户个人资料。它们没有提供满足旨在无人值守运行的服务器端组件的需要所必需的可重入性或安全性级别。

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

如果要构建在服务器端上下文中运行的解决方案,则应尝试使用对无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果您从服务器端解决方案中使用Office应用程序,则该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。在Considerations for server-side Automation of Office文章中了解有关此内容的更多信息。

作为一种可能的解决方法,您可以使用不触发安全提示的低级API-扩展MAPI。或围绕此API的所有包装,例如“兑换”。它允许桥接两个问题。