问题描述
Microsoft.Office.Interop.outlook.application app = new
Microsoft.Office.Interop.outlook.application();
Microsoft.Office.Interop.Outlook.MailItem item = app.CreateItem((Microsoft.Office.Interop.Outlook.OlItemType.olMailItem));
item.PropertyAccessor.SetProperty(PsInternetHeaders + Foobar,1031);
item.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
item.To = "a@test.com;b@test.com;c@test.com";
item.BCC = "cc@test.com";
item.Body = "Hello There!";
item.display();
请注意,我需要访问“ PropertyAccessor”属性。
在正常环境中,它运行良好,但是在具有此注册表项的“安全”环境中,它仅会失败并显示Operation aborted (Exception from HRESULT: 0x80004004 (E_ABORT))
:
[HKEY_CURRENT_USER\Software\Policies\Microsoft\office\16.0\outlook\security]
"PromptOOMAddressBookAccess"=dword:00000000
"AdminSecurityMode"=dword:00000003
"PromptOOMAddressinformationAccess"=dword:00000000
Outlooks安全模型似乎有一个“ trustedaddins”列表,但是我不确定这是否也适用于“外部应用程序”,并且我不确定我是否需要注册TrustedAddins
(请参阅{{3 }}。
我的主要问题是:是否可以在trustedaddins
下注册和注册foobar.exe还是根本不可能?
我知道我可以降低或禁用安全性内容,但这不是我的选择;)
解决方法
您唯一的选项列在How to avoid Outlook Security Alert when sending Outlook message from VBScript?
您可能还想将PsInternetHeaders
属性设置为仅字符串,而不是整数。