- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这样的情况:
我认为无法以自动化的方式使用 Outlook 发送电子邮件(在以屏幕锁定的用户身份登录的无人值守的盒子上)。我尝试了许多不同的方法,但总是收到安全警告消息。我该如何解决这个问题?
我已经尝试了 this 上的所有内容有用的网站并删除了每个选项,如下所示:
Strategies
Ideally, applications that automate Outlook should avoid code that triggers these security prompts.
这正是我最终所做的(请参阅下面的答案),这就是为什么该页面上的所有其他选项都不相关的原因。让我们一一来看:
Sending messages
It is not necessary to use Outlook objects at all if your goal is simply to create and send an email message. Microsoft provides the CDO for Windows library for creating and sending messages with SMTP. Using this library totally bypasses Outlook and MAPI and does not trigger security prompts. For code samples, see ...
SMTP。不许去。网络策略不允许。
Use Extended MAPI instead of Outlook objects, Simple MAPI, or CDO 1.21 for all code that potentially triggers security prompts.
扩展 MAPI 可能有效,但它非常麻烦和冗长,并且涉及大量 C/C++ 代码(这不是这个问题的主题;见上文),并且似乎不可能在不提示用户的情况下使用它他们的密码。
Use a third-party library -- Redemption or MAPI33 -- for all code that potentially triggers security prompts. This approach is easier than using Extended MAPI, which has a steep learning curve, and almost as secure. These libraries also offer additional features to help with Outlook code projects.
第三方库的问题有四个方面: - 它们需要花钱; - 即使它们是免费的,它们也会引入许可问题(一些组织在允许软件进入生态系统之前需要经过律师的广泛审查); - 在大多数环境中,用户无法禁用 Outlook 选项中的编程访问警告,甚至会引发整个问题。嗯,那些可能的情况是什么?难道是……公司环境?在企业环境中采购软件需要花费太长的时间,以至于不切实际,除非使用它节省的成本超过数百万美元。但是,可以进行许多实际的流程改进,这些改进不会带来很高的成本节省,但如果需要软件采购,则采购第三方软件所花费的金钱和劳动力会比节省的总成本更多。 - 网络管理员可能不信任该软件驻留在系统上,因为它可能被用于恶意目的。
Deploy with your application a tool to suppress the security prompts.
这假设有必要抑制 OMG 提示,但就我而言,并非如此,只是为了发送一封简单的电子邮件(请参阅我的答案)。
For Outlook 2007, make sure the machine is running an up-to-date anti-virus application and do all coding with Outlook objects, avoiding CDO 1.21 and Simple MAPI code.
病毒扫描程序是最新的,但更改其版本或供应商完全超出我的控制范围,而且 Outlook 无法识别它。它显示:“防病毒状态:无效。此版本的 Windows 支持防病毒检测,但未找到防病毒。”
In Outlook custom form code, Outlook VBA code, and COM add-ins, derive all objects from the Outlook.Application object provided by VBA or the add-in architecture. For example, see the sample VBA "run a script" rule procedure below.
有趣,可能有用,但不是必需的。这会不必要地依赖于在 Outlook 中设置规则来部署软件,从而使部署变得复杂。
Deploy Outlook security settings that "trust" certain COM add-ins or that allow all applications to have unrestricted access to certain features, such as accessing addresses. In versions before Outlook 2007, this requires Microsoft Exchange Server. For Outlook 2007, see the section on version-specific considerations below.
麻烦:安装 COM 加载项需要管理访问权限,而在某些组织中可能很难获得管理访问权限。
In a corporate environment where Exchange is the email server, direct access to the data on the server is available through the WebDAV API beginning with Exchange 2000 and, starting with Exchange 2007, through Exchange Web Services.
在我的环境以及其他可能的环境中被禁用。
In a corporate environment, the administrator may choose to loosen Outlook security for some or all users.
当然,但这需要与网络团队沟通/协调/合作。如果管理访问权限不可用于安装 COM 插件,那么它也可能不可用于放松组策略。
最佳答案
此代码适用于我的 Outlook 2010 系统,无需用户交互即可发送电子邮件。它有点脆弱,因为如果用户在撰写邮件时恰好在系统上积极工作(打字、单击),则可能会出现用户输入进入弹出窗口的情况瞬间,要么干扰邮件的发送,要么在邮件正文中添加额外的未知字符。
只要运行此功能的系统的用户意识到这一点,并且虚假击键干扰的潜在后果不是业务关键型,则此功能是可以接受的。
需要注意的是:此解决方案的关键是我们不调用 MailItem.Send
方法。这是触发编程访问保护的方法。相反,我们触发 ALT+s 快捷方式,默认情况下,当邮件窗口在 Outlook 中获得焦点时,会按下“发送”按钮。如果您启用了默认的拼写检查提示,则会弹出进一步的拼写检查提示。我们的解决方案是禁用拼写检查提示,尽管我确信您可以添加更多 SendKeys 来单击它,因为拼写检查提示不是与安全相关的对话框。
关于 UIPI(用户界面权限隔离)的说明:
Outlook 2010 以登录系统的用户身份运行,完整性级别为中。由 Windows 资源管理器启动的程序,或者作为以类似方式启动的程序的子程序或后代启动的程序,也将以中完整性级别启动。只要用户和 session ID 匹配,并且完整性级别相同或更高,UIPI 就不能有效阻止“SendKeys”类型输入。在我的特定环境中,VBScript 主机进程和 Outlook 进程的用户和 session ID 相同,完整性级别相同。在您的环境中,如果其中任何条件不成立,则此代码将无法工作。它也未在 2010 版之前或更高版本的 Office 上进行测试。
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
此外,还介绍了如何在从 Windows 任务计划程序运行 VBScript 时实现此功能。只需勾选红色椭圆形“以最高权限运行”框,即可使其以尽可能高的完整性级别运行,而无需 UAC 提升(如果您不是管理员帐户,则为“中”)。
关于vbscript - 从 VBScript 发送 Outlook 邮件时如何避免 Outlook 安全警报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14898756/
我正在学习 Spring 安全性,但我对它的灵活性感到困惑.. 我知道我可以通过在标签中定义规则来保护网址 然后我看到有一个@secure 注释可以保护方法。 然后还有其他注释来保护域(或 POJO)
假设有一个 key 加密 key 位于内存中并且未写入文件或数据库... byte[] kek = new byte[32]; secureRandom.nextBytes(kek); byte[]
我有 Spring Security 3.2.0 RC1 的问题 我正在使用标签来连接我 这表示“方法‘setF
我正在创建一个使用 Node Js 服务器 API 的 Flutter 应用程序。对于授权,我决定将 JWT 与私钥/公钥一起使用。服务器和移动客户端之间的通信使用 HTTPS。 Flutter 应用
在过去的几年里,我一直在使用范围从 Raphael.js 的 javascript 库。至 D3 ,我已经为自己的教育操纵了来自网络各地的动画。我已经从各种 git 存储库下载了 js 脚本,例如 s
在 python 中实现身份验证的好方法是什么?已经存在的东西也很好。我需要它通过不受信任的网络连接进行身份验证。它不需要太高级,只要足以安全地获取通用密码即可。我查看了 ssl 模块。但那个模块让我
我正在尝试学习“如何在 Hadoop 中实现 Kerberos?”我已经看过这个文档 https://issues.apache.org/jira/browse/HADOOP-4487我还了解了基本的
我有一个带有 apache2、php、mysql 的生产服务器。我现在只有一个站点 (mysite.com) 作为虚拟主机。我想把 phpmyadmin、webalizer 和 webmin 放在那里
前些天在网上看到防火墙软件OPNsense,对其有了兴趣,以前写过一个其前面的一个软件M0n0wall( 关于m0n0wa
我在 Spring Boot 和 oauth2(由 Google 提供)上编写了 rest 后端,在 "/login" 上自动重定向。除了 web 的 oauth 之外,我还想在移动后端进行 Fire
我想调用类 Foo,它的构造函数中有抽象类 Base。我希望能够从派生自 Base 的 Derived 调用 Foo 并使用 Derived覆盖方法而不是 Base 的方法。 我只能按照指示使用原始指
如何提高 session 的安全性? $this->session->userdata('userid') 我一直在为我的 ajax 调用扔掉这个小坏蛋。有些情况我没有。然后我想,使用 DOM 中的
我目前正在为某些人提供程序集编译服务。他们可以在在线编辑器中输入汇编代码并进行编译。然后编译它时,代码通过ajax请求发送到我的服务器,编译并返回程序的输出。 但是,我想知道我可以做些什么来防止对服务
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
目前,我通过将 session 中的 key 与 MySQl 数据库中的相同 key 相匹配来验证用户 session 。我使用随机数重新生成 session ,该随机数在每个页面加载时都受 MD5
Microsoft 模式与实践团队提供了一个很棒的 pdf,称为:“构建安全的 asp.net 应用程序”。 microsoft pdf 由于它是为 .Net 1.0 编写的,所以现在有点旧了。有谁知
在 Lua 中,通常会使用 math.random 生成随机值和/或字符串。 & math.randomseed , 其中 os.time用于 math.randomseed . 然而,这种方法有一个
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我们有一个严重依赖 Ajax 的应用程序。确保对服务器端脚本的请求不是通过独立程序而是通过坐在浏览器上的实际用户的好方法是什么 最佳答案 真的没有。 通过浏览器发送的任何请求都可以由独立程序伪造。 归
我正在寻找使用 WebSockets 与我们的服务器通信来实现 web (angular) 和 iPhone 应用程序。在过去使用 HTTP 请求时,我们使用请求数据、url、时间戳等的哈希值来验证和
我是一名优秀的程序员,十分优秀!