从VBScript发送Outlook邮件时如何避免Outlook安全警报?
我有这样的情况:从VBScript发送Outlook邮件时如何避免Outlook安全警报?,vbscript,outlook,security-warning,Vbscript,Outlook,Security Warning,我有这样的情况: 代码必须在VBScript中(我无法控制) 无法在Outlook首选项中禁用编程访问限制(组策略,而不是管理员,并且Windows无法识别已安装的有效病毒扫描程序) 无法使用SMTP,因为它是不允许的 我认为用Outlook自动发送电子邮件是不可能的(在一个无人值守的框中,用户以锁定屏幕的身份登录)。我尝试了许多不同的方法,但总是得到安全警告信息。我怎样才能解决这个问题 我已经在有用的网站上尝试了所有方法,并取消了以下每个选项: 战略 理想情况下,自动化Outlook的应用
- 代码必须在VBScript中(我无法控制)
- 无法在Outlook首选项中禁用编程访问限制(组策略,而不是管理员,并且Windows无法识别已安装的有效病毒扫描程序)
- 无法使用SMTP,因为它是不允许的
理想情况下,自动化Outlook的应用程序应该避免触发这些安全提示的代码 这正是我最后所做的(见下面的答案),这就是为什么该页面上的所有其他选项都是不相关的。让我们一个接一个地看: 发送消息
如果您的目标只是创建和发送电子邮件,则根本不需要使用Outlook对象。Microsoft提供了CDO for Windows库,用于创建和发送带有SMTP的邮件。使用此库完全绕过Outlook和MAPI,不会触发安全提示。有关代码示例,请参阅 SMTP。不行。网络策略不允许 对于所有可能触发安全提示的代码,请使用扩展MAPI,而不是Outlook对象、简单MAPI或CDO 1.21 扩展MAPI可能可以工作,但它极其繁琐,涉及大量C/C++代码(这不是本问题的主题;请参见上文),并且在不提示用户输入密码的情况下似乎不可能使用它 对于可能触发安全提示的所有代码,请使用第三方库(Redemption或MAPI33)。这种方法比使用扩展MAPI更容易,因为扩展MAPI具有陡峭的学习曲线,并且几乎同样安全。这些库还提供其他功能来帮助Outlook代码项目 第三方库的问题有四个方面: -它们需要钱; -即使是免费的,它们也会引入许可问题(一些组织在允许软件进入生态系统之前需要律师的广泛审查); -在大多数环境中,用户无法在Outlook选项中禁用编程访问警告时,甚至会担心整个问题。嗯,那些可能是什么情况?可能是。。。企业环境?在企业环境中采购软件需要很长的时间,除非使用软件节省的成本超过数百万美元,否则就不切实际了。但是,可以进行许多实际的过程改进,这些改进不会产生高的成本节约,但是如果需要软件采购,采购第三方软件的成本和劳动力将高于总成本节约。 -网络管理员可能不相信软件驻留在系统上,因为它可能被用于恶意目的 在应用程序中部署一个工具以抑制安全提示 这假设有必要对OMG提示进行抑制,而在我的情况下,不只是发送一封简单的电子邮件(请参阅我的答案) 对于Outlook 2007,请确保计算机正在运行最新的防病毒应用程序,并使用Outlook对象进行所有编码,避免使用CDO 1.21和简单的MAPI代码 病毒扫描程序是最新的,但我完全无法控制更改其版本或供应商,Outlook无法识别它。它显示:“防病毒状态:无效。此版本的Windows支持防病毒检测,但未找到防病毒。” 在Outlook自定义表单代码、Outlook VBA代码和COM加载项中,从VBA或加载项体系结构提供的Outlook.Application对象派生所有对象。例如,请参见下面的示例VBA“运行脚本”规则过程 有趣,可能有用,但不是必需的。这会对在Outlook中设置规则以部署软件产生不必要的依赖,从而使部署复杂化 部署“信任”某些COM加载项或允许所有应用程序对某些功能(如访问地址)进行无限制访问的Outlook安全设置。在Outlook 2007之前的版本中,这需要Microsoft Exchange Server。有关Outlook 2007,请参阅下面有关特定于版本的注意事项的部分 麻烦:安装COM外接程序需要管理访问权限,在某些组织中,管理访问权限很难实现 在Exchange作为电子邮件服务器的公司环境中,可以通过WebDAV API(从Exchange 2000开始,从Exchange 2007开始)直接访问服务器上的数据 在我的环境中有残疾,可能还有其他人 在公司环境中,管理员可以选择为部分或所有用户放松Outlook安全性
当然可以,但这需要与网络团队进行沟通/协调/合作。如果管理权限不可用于安装COM加载项,则可能也不可用于解除组策略。此代码在我的Outlook 2010系统上运行,以发送电子邮件而无需用户交互。这有点脆弱,因为如果用户在撰写邮件时正积极地在系统上工作(键入、单击),那么可能会出现用户输入进入弹出的窗口的情况,并在瞬间干扰邮件的发送,或者在邮件正文中添加额外的未知字符 只要系统上的用户
Sub SendEmail_Outlook()
Set WshShell = WScript.CreateObject("WScript.Shell")
Set ol=CreateObject("Outlook.Application")
Set Mail=ol.CreateItem(0)
Mail.to= "you@example.com"
Mail.Subject = "test"
Mail.HTMLBody = "test"
Mail.Display
WshShell.SendKeys "%s"
Set Mail = Nothing
Set ol = Nothing
End Sub
SendEmail_Outlook