4

我有一个非常特殊的问题。

如果我们在 Outlook 中创建邮件,我们添加一个 UserProperty,其中包含我们系统的 DataBase-ID,因此我们可以将邮件链接到表示的 DataBase-Item。在读取每个邮箱中的邮件并自动导入它们的服务上,我可以使用 ExtendedPropertyDefinitions 读取此属性。到目前为止一切都很好...

如果用户现在在 Outlook 中转发邮件,Olk 会将 UserProperty 复制到新邮件中。现在我的问题开始了。现在我的服务认为新消息也链接到我们的数据库,并使用新的正文和新的主题更新 DB-Entry。

那么现在有人如何确定邮件是否为转发邮件或如何告诉 Outlook 不要将用户属性复制到转发的(新)邮件?

谢谢。周杰伦

我们想到的,但不适用于我们的案例
- 第二个用户属性包含一个简单的标签链接“fromSystem”。因为这也会被复制。
- 第二个用户属性,包含从主题和正文计算的哈希和。因为两者都可以由用户更改。我们只是创建消息,添加所有属性并显示它。从这一点开始,在服务处理邮件之前,我们不再控制邮件发生了什么。

4

1 回答 1

7

使用 EWS 的服务应检查并仅在数据库长度为 22 字节ConversationIndex时才更新数据库(原始源消息)。转发电子邮件和回复电子邮件不断附加 5 个字节(10 个字符),使其超过 22 个字节。ConversationIndex

示例对话索引

原装:01CDD15D80E51C1D4522172840ACA96287DA28A15D97
回复:01CDD15D80E51C1D4522172840ACA96287DA28A15D970000018630
转发:01CDD15D80E51C1D4522172840ACA96287DA28A15D970000018630000000FC30

ConversationIndexConversationTopic表示(本质上是 GUID + 时间戳)的顺序。请参阅MSDN 上的使用对话ConversationIndex在 MSDN here上明确定义

 if (message.ConversationIndex.Length == 22)
 {
   // update DB body, subject, etc.
 }

还要确保EmailMessageSchema.ConversationIndex在尝试访问其值之前加载。

于 2012-12-03T14:00:25.720 回答