无法读取的Outlook邮件项自定义属性在一定的环境
问题描述:
我在我的PASCAL代码定义的常数...无法读取的Outlook邮件项自定义属性在一定的环境
const PropNameForUOID = 'http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/ORIONUOID
我通过调用设置该属性...
OleVariant(MI).PropertyAccessor.SetProperty(PropNameForUOID, Guid);
我我正在使用Add-in Express生成的Outlook Addin进行此操作。 MI是Outlook200.pas MailItem; 这一切都适用于设置属性。我没有错误。
这是我如何在后面的代码阅读...
result := OleVariant(MI).PropertyAccessor.GetProperty(PropNameForUOID);
当我我的Outlook 2013客户端上运行此,打的MS Exchange建立14.3.294.4000,一切都很正常。
但是,我们将其放置在客户端系统上,当我们尝试读取属性时出现错误。设置正常,但读取错误。
在客户端计算机上,我的IT技术人员配置了Outlook 2013以击中他有权访问的另一个交换服务器。然后它工作。我们认为这与客户端的Exchange服务器有关。
可能是这种情况吗?
如果是这样,我们应该寻找什么样的设置?
有没有什么我在做我的Delphi代码错了?
我有PropertyAccessor.GetProperty代码包装在try ... except ... end。我不能让这个异常显示给用户。但是,为什么它在一些客户端网络而不是其他网络上工作正常?有没有我们可以向客户推荐的MS Exchange设置?回到我的代码,我可以采取不同的方法吗?要求:如果打印电子邮件,我在该项目上设置的属性无法在打印页面上显示。 –
较旧版本的Outlook从GetProperty返回null,最新版本引发异常。你必须期待和处理这个例外。当然,你必须首先以某种方式设置属性,它不能从任何地方出现。 –
我发现如果我使用'code'UP设置属性:= MI.UserProperties.Add('ORIONUOID',olText,False,olText); UP.Value:= Guid;'code'然后我可以读取它们,但是当用户打印电子邮件时它们也会打印。我怎样才能隐藏这种财产? –