【问题标题】:EWS Managed API 2.2 Read\Write extended properties of attachmentsEWS 托管 API 2.2 读取\写入附件的扩展属性
【发布时间】:2016-03-28 17:06:15
【问题描述】:

目前,我正在将一个大型项目从 MAPI CDO 迁移到 EWS(托管 API 2.2)以支持 Ex2016。除了一个之外,所有东西都迁移得很好:我找不到如何读取\写入附件扩展属性的方法。有谁知道如何做到这一点,或者可能是一些解决方法?这对我来说非常重要,如果能提供任何帮助,我将不胜感激。

---更新: 还尝试使用本机 EWS 来获取附件的属性,但也没有成功:

        var ret = esb.GetAttachment(new GetAttachmentType()
        {
            AttachmentIds = new []{new AttachmentIdType()
                {
                    Id = "AAMkADVhNjUzMzMyLTRiMDYtNDc4OS1hYjJjLWI1ZDA4ZWFhYTJkZQBGAAAAAADqFaOFYZSeQI5UObwGbjIJBwAOgaos6ORVS5+o5bQovn/kAAAAeN2cAAAOgaos6ORVS5+o5bQovn/kAAAeCoIuAAABEgAQAJPAuRg2gipPmEKfgW26mFU=", 
                }},
            AttachmentShape = new AttachmentResponseShapeType()
            {
                BodyType = BodyTypeResponseType.Best,
                BodyTypeSpecified = true,
                IncludeMimeContent = false,
                IncludeMimeContentSpecified = true,
                AdditionalProperties = new []
                {
                    new PathToExtendedFieldType() { PropertyType = MapiPropertyTypeType.Integer, PropertyTag = "0x3705"},
                    new PathToExtendedFieldType() { PropertyType = MapiPropertyTypeType.Integer, PropertyTag = "0x0E21"},
                }
            }
        });

响应不包含任何请求的属性。

---更新2:

在项目中,我们使用附件的下一个属性: PR_RECORD_KEY、PR_DISPLAY_NAME、PR_RENDERING_POSITION PR_ATTACH_ENCODING、PR_ATTACH_NUM、PR_ATTACH_METHOD、PR_ATTACH_LONG_FILENAME、PR_ATTACHMENT_HIDDEN、PR_ATTACH_CONTENT_ID、PR_ATTACH_FLAGS、PR_ATTACH_MIME_TAG、PR_ATTACH_CONTENT_LOCATION、PR_ATTACH_SIZE

我们还使用自定义属性集创建了几个自定义扩展属性,并使用该属性标记了一些附件。 一些属性可以在 EWS/ManagedApi 的对象模型中找到,例如 PR_ATTACH_SIZE,但其他属性和自定义道具存在问题。

所以我们需要读取/写入标准附件属性以及自定义。 在项目中我们标记附件本身,而不是嵌入的项目。

【问题讨论】:

    标签: exchange-server exchangewebservices ews-managed-api


    【解决方案1】:

    您无法访问 EWS 中附件或收件人集合上的扩展属性,这些属性可通过 API 作为强类型属性进行访问。唯一可以使用扩展属性的地方是消息级别。

    也就是说,您能否详细解释一下您如何使用扩展属性,例如这些扩展属性是否适用于嵌入项目。如果是这种情况,那么您可以通过项目附件访问这些扩展属性。

    查看您的代码 0x3705 是附件上的 PR_ATTACH_METHOD 属性,在 EWS 中没有与此等效的属性,而是 EWS 将根据附件类型返回不同的附件类。例如 ItemAttachment、FileAttachment 或 ReferenceAttachment(例如用于 OneDrive 附件)。 0x0E21 是附件编号 EWS 将按照 GetItem 请求中该编号的顺序返回附件,因此您可以自己计算。但是该属性在 EWS 中没有用,因为要获取附件,您需要 EWSId,这与 MAPI 不同。

    干杯 格伦

    【讨论】:

    • 您好 Glen,非常感谢您的回复。检查请更新 2。您说“您可以使用扩展属性的唯一地方是消息级别。”。您的意思是消息低级别的 EWS 本身(不是托管 API)还是您的意思是 EmailMessage/Contacts/Appointments 等?
    • 您只能在 EWS 中的项目级别获取/设置扩展属性(无论您使用什么方法),您无法在附件或收件人上获取它们(就像在 MAPI 中一样)。您将需要重新设计您的应用程序,例如虽然您不能在附件上使用扩展属性,但您可以在项目上创建一个自定义属性,该属性仅映射您想要在附件上的任何属性。然后只需重新映射您的逻辑以查看该属性,但您不会找到您之后的一对一映射。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    相关资源
    最近更新 更多