- 代码必须使用VBScript(超出我的控制范围)
- 无法在Outlook首选项中禁用程序访问限制(组策略,不是管理员,并且Windows无法识别已安装的有效病毒扫描器)
- 不能使用SMTP因为它被禁止了。
我认为没有办法以自动化的方式(在一个已登录用户并锁定屏幕的未监管的框中)使用Outlook发送电子邮件。我尝试了许多不同的方法,但总是会收到安全警告消息。我该怎么办?
我已经尝试了此有用的网站上的所有内容,并根据以下方式消除了每个选项:
策略
理想情况下,自动化Outlook的应用程序应避免触发这些安全提示的代码。
这正是我最终所做的(请参见下面的答案),这就是为什么该页面上的所有其他选项都不相关的原因。我们逐一来看:
发送消息
如果您的目标仅是创建和发送电子邮件消息,则根本不需要使用Outlook对象。Microsoft提供了CDO for Windows库,用于使用SMTP创建和发送消息。使用此库完全绕过了Outlook和MAPI,并且不会触发安全提示。有关代码示例,请参见...
SMTP。无法使用。被网络策略禁止。
对于所有可能触发安全提示的代码,请使用扩展MAPI而不是Outlook对象、Simple MAPI或CDO 1.21。
扩展MAPI可能有效,但它非常繁琐冗长,并涉及大量C/C++代码(这不在本问题的主题之内;请参见上文),似乎不可能在不提示用户输入密码的情况下使用它。
第三方库存在以下四个问题: - 它们需要花费金钱; - 即使它们是免费的,它们也会引入许可问题(某些组织在允许软件进入生态系统之前需要律师进行广泛审查); - 大多数环境中,即使整个问题是一个关注点,用户不能在Outlook选项中禁用编程访问警告。这可能是什么情况呢?难道是...企业环境吗?在企业环境中采购软件需要太长时间了,除非使用它的成本节省将超过几百万美元。但是有许多实际的流程改进可以进行,这些改进不会产生如此高的成本节省,但采购第三方软件所需的成本和劳动力总成本将超过节省的总成本,如果需要采购软件。 - 网络管理员可能不信任软件驻留在系统上,因为它可能被用于恶意目的。对于所有可能触发安全提示的代码,请使用第三方库--Redemption或MAPI33。这种方法比使用具有陡峭学习曲线的扩展MAPI更容易,并且几乎同样安全。这些库还提供了其他功能来帮助Outlook代码项目。
部署一个工具来抑制安全提示。
这假设抑制OMG提示是必要的,在我的情况下,只需发送一封简单的电子邮件即可(请参见我的答案)。
对于Outlook 2007,请确保机器正在运行最新的防病毒应用程序,并使用Outlook对象进行所有编码,避免使用CDO 1.21和简单的MAPI代码。
病毒扫描程序是最新的,但我完全无法控制更改其版本或供应商,而且Outlook无法识别它。它说:“防病毒状态:无效。此版本的Windows支持防病毒检测,但未找到防病毒软件。”
在Outlook自定义表单代码、Outlook VBA代码和COM添加项中,从VBA或添加项架构提供的Outlook.Application对象派生所有对象。例如,查看下面的示例VBA“运行脚本”规则过程。
有趣,可能有用,但不是必要的。这会在部署软件之前创建一个不必要的依赖关系,这会使部署变得复杂。
部署Outlook安全设置,“信任”某些COM添加项或允许所有应用程序无限制地访问某些功能,例如访问地址。在Outlook 2007之前的版本中,这需要Microsoft Exchange Server。有关Outlook 2007,请参见下面特定版本的注意事项部分。
繁琐:需要管理员访问权限才能安装COM添加项,而在某些组织中很难获得管理员访问权限。
在Exchange是电子邮件服务器的企业环境中,可以通过WebDAV API(从Exchange 2000开始)直接访问服务器上的数据,并从Exchange 2007开始通过Exchange Web Services进行访问。
在我的环境中被禁用,也可能在其他环境中被禁用。
在企业环境中,管理员可以选择放宽一些或所有用户的Outlook安全性。
当然,这需要与网络团队进行沟通/协调/合作。如果没有管理访问权限来安装COM插件,则可能也没有放松组策略的权限。