【问题标题】:Exchange web services: why is ItemId not constant?Exchange Web 服务:为什么 ItemId 不恒定?
【发布时间】:2011-05-09 00:32:40
【问题描述】:

我编写了一个小应用程序,它应该自动处理来自公共文件夹的电子邮件。对于每封电子邮件,我们希望在数据库中保存一些元数据。

我想使用 ItemID 在此元数据和特定电子邮件之间建立链接,但我刚刚发现此 ItemId 不是恒定的。例如,如果电子邮件从公用文件夹移动到另一个,它将收到另一个 ItemId。这意味着,电子邮件和相关元数据之间的链接丢失了。

那么,问题是,我怎样才能在元数据和特定电子邮件之间建立链接?

【问题讨论】:

标签: c# exchange-server exchangewebservices


【解决方案1】:

您必须将 EntryItemId 转换为 EWS 唯一项目 ID,然后您可以用作主键来创建数据库中的条目

看看:

Link

【讨论】:

  • 不,我相信当项目在文件夹之间移动时,EntryId 也会发生变化。当然,您可以在 EwsId 和 EntryId 之间进行转换,但这并不意味着它会随着时间的推移为您提供唯一的 ID。
【解决方案2】:

物品 ID 更改。它并没有始终保持独一无二。 要访问一个项目,可以使用 GUID。

(下面的 SOAP 请求用于获取日历项。) 您可以在 FindItem 调用中使用 GUID 获取有关项目的信息

所有属性 /* GUID */ 限制> 查找项目>

【讨论】:

    【解决方案3】:

    我的理解是,EWS 唯一 ID 包含某种形式的 EntryId。因此,一旦元素被移动到另一个文件夹,它就会改变。

    虽然此处不适用,但日历条目的情况更为复杂,因为 Exchange 在某些情况下会销毁并重新创建约会,从而更改唯一 ID。

    此页面 (http://msdn.microsoft.com/en-us/library/cc815908.aspx) 包含可用于识别对象的 MAPI 属性的概述。另一种方法是您可以将自己的 id 属性添加到 Exchange 元素(通过扩展属性)。

    【讨论】:

    • 我遇到的问题是当一个项目已被删除的通知进来时,因为扩展属性附加到项目,它是不可检索的,因为它已经被删除了项目...我的相关问题在这里:stackoverflow.com/q/8807765/555384
    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    相关资源
    最近更新 更多