我有一个非常特殊的问题。
如果我们在Outlook中创建邮件,我们添加一个UserProperty,其中包含我们系统的DataBase-ID,因此我们可以将邮件链接到代表DataBase-Item。在读取每个邮箱中的邮件并自动导入它的服务上,我可以使用ExtendedPropertyDefinitions读取此属性。到目前为止一切都很好......
如果用户现在在Outlook中转发邮件,Olk会将UserProperty复制到新邮件。现在我的问题开始了。现在我的服务认为新消息也链接到我们的数据库,并使用新的Body和新主题更新DB-Entry。
现在有人如何判断邮件是转发邮件还是如何告诉Outlook不要将userproperty复制到转发(新)邮件?
THX。杰
我们的想法,但不适用于我们的案件
- 包含简单标记linke" fromSystem"的第二个用户属性。因为这也会被复制。
- 第二个userproperty,包含从subject和Body计算的hashsum。原因两者都可以由用户更改。我们只是创建消息,添加所有属性并显示它。从这一点开始,我们不再控制邮件发生的事情,直到服务处理它为止。
答案 0 :(得分:6)
您使用EWS的服务应检查ConversationIndex
并仅在数据库 22字节长(原始源消息)时更新数据库。转发电子邮件和回复电子邮件会向ConversationIndex
附加5个字节( 10个字符),将其扩展到22个字节以上。
Original: 01CDD15D80E51C1D4522172840ACA96287DA28A15D97 Reply: 01CDD15D80E51C1D4522172840ACA96287DA28A15D970000018630 Forward: 01CDD15D80E51C1D4522172840ACA96287DA28A15D970000018630000000FC30
ConversationIndex
表示ConversationTopic
(本质上为GUID +时间戳)的顺序排序。见Working with Conversations on MSDN。 ConversationIndex
为explicitly defined on MSDN here。
if (message.ConversationIndex.Length == 22)
{
// update DB body, subject, etc.
}
还要确保在尝试访问其值之前加载EmailMessageSchema.ConversationIndex
。