我们称微软交换机设置扩展属性,在我们的例子中是一个独特的guid
microsoft.exchange.webservices.data.core.exception.service.remote.ServiceResponseException: An internal server error occurred. The operation failed., Invalid named property
直到现在,当我们的一些用户遇到上述问题时,它一直很好用....
val uId = getUniqueId();
val emailExtendedPropDef = new ExtendedPropertyDefinition(uId,"uniqueId", MapiPropertyType.String)
try {
email.setExtendedProperty(emailExtendedPropDef, uId.toString)
email.sendAndSaveCopy()
} catch {
case e: Exception =>
error(s"Exception in setting extended property for user $from", e)
throw e
}
试图找到问题的根本原因,我们也认为它可能与微软交换机上的扩展属性限制有关(不确定如何证明它确实是限制的)任何帮助指出我们正确的方向将非常有帮助
我们的用例是能够在客户想要回复时检索电子邮件我们想要检索要包含在用户回复中的特定电子邮件....目前我们正在使用uid来实现.... / p>
我们一直按照此处的文档使用代码
以及此处的文档
https://github.com/OfficeDev/ews-java-api/wiki/Getting-Started-Guide#extended-properties
更新:根据评论,我们了解到我们必须将extendedProperty视为列定义并更新相同的列...但我们无法弄清楚如何实现这一点...任何代码示例指向我们正确的方向将会有很大的帮助
最新更新:我们已经删除了一些extendedPropertyDefinition但仍然面临同样的无效属性可能有一个请指出我们正确的方向
答案 0 :(得分:1)
说getUniqueId在每次调用时返回不同的guid是否安全?如果是这样,那就是问题所在。将Guid视为名称空间的扩展道具。交换存储将自定义扩展道具的数量限制为每个邮箱32k。所以你可能会达到这个极限。但除此之外,创建扩展属性的主要原因是您可以在以后引用它。但是如果你基本上每次丢弃名称空间,你就会在项目上留下孤立的道具。如果不了解您的特定情况,我只能说Guid应该被视为真正的命名空间。为您的应用程序/公司/方案选择一个并硬编码。他们在该命名空间中创建您想要的所有命名道具。例如,Guid名称空间1中的“MyProp / String”与Guid名称空间2中的“MyProp / String”不同。