13

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

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

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

4

3 回答 3

7

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

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

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

于 2010-11-14T09:27:20.583 回答
1

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

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

 <FindItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
      xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
     遍历=“浅”>
  <物品形状>
  <t:BaseShape>所有属性</t:BaseShape>
  </ItemShape>
  <限制>
  <t:IsEqualTo>
  <t:ExtendedFieldURI PropertySetId="6ED8DA90-450B-101B-98DA-00AA003F1305" PropertyId="3" PropertyType="Binary" />
  <t:FieldURIOrConstant>
  <t:Constant Value="BAAAAJXIl1MJ8="/> /* GUID */
  </t:FieldURIOrConstant>
  </t:IsEqualTo>
  </限制>
  <父文件夹 ID>
  <t:DistinguishedFolderId Id="日历"/>
  </ParentFolderIds>
  </查找项目>
于 2010-12-10T10:03:04.180 回答
0

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

看一下:

关联

于 2010-11-12T13:39:08.133 回答