我写了一个小应用程序,它应该自动处理来自公共文件夹的电子邮件。对于每封电子邮件,我们希望在数据库中保存一些元数据。
我想使用 ItemID 在此元数据和特定电子邮件之间建立链接,我刚刚发现此 ItemId 不是恒定的。例如,如果电子邮件从公用文件夹移动到另一个,它将收到另一个 ItemId。这意味着,电子邮件和相关元数据之间的链接丢失了。
所以,问题是,我怎样才能在元数据和特定电子邮件之间建立链接?
我写了一个小应用程序,它应该自动处理来自公共文件夹的电子邮件。对于每封电子邮件,我们希望在数据库中保存一些元数据。
我想使用 ItemID 在此元数据和特定电子邮件之间建立链接,我刚刚发现此 ItemId 不是恒定的。例如,如果电子邮件从公用文件夹移动到另一个,它将收到另一个 ItemId。这意味着,电子邮件和相关元数据之间的链接丢失了。
所以,问题是,我怎样才能在元数据和特定电子邮件之间建立链接?
我的理解是,EWS 唯一 ID 包含某种形式的 EntryId。因此,一旦元素移动到另一个文件夹,它就会改变。
虽然此处不适用,但日历条目的情况更为复杂,因为 Exchange 在某些情况下会销毁并重新创建约会,从而更改唯一 ID。
此页面 ( http://msdn.microsoft.com/en-us/library/cc815908.aspx ) 包含可用于识别对象的 MAPI 属性的概述。另一种方法是您可以将自己的 id 属性添加到 Exchange 元素(通过扩展属性)。
项目 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> </查找项目>