如何通知邮件是转发邮件?

时间:2012-11-30 13:50:04

标签: email outlook exchangewebservices

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

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

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

现在有人如何判断邮件是转发邮件还是如何告诉Outlook不要将userproperty复制到转发(新)邮件?

THX。杰

我们的想法,但不适用于我们的案件 - 包含简单标记linke" fromSystem"的第二个用户属性。因为这也会被复制。
- 第二个userproperty,包含从subject和Body计算的hashsum。原因两者都可以由用户更改。我们只是创建消息,添加所有属性并显示它。从这一点开始,我们不再控制邮件发生的事情,直到服务处理它为止。

1 个答案:

答案 0 :(得分:6)

您使用EWS的服务应检查ConversationIndex并仅在数据库 22字节长原始源消息)时更新数据库。转发电子邮件和回复电子邮件会向ConversationIndex附加5个字节( 10个字符),将其扩展到22个字节以上。

示例ConversationIndexes

Original: 01CDD15D80E51C1D4522172840ACA96287DA28A15D97
Reply:    01CDD15D80E51C1D4522172840ACA96287DA28A15D970000018630
Forward:  01CDD15D80E51C1D4522172840ACA96287DA28A15D970000018630000000FC30

ConversationIndex表示ConversationTopic本质上为GUID +时间戳)的顺序排序。见Working with Conversations on MSDNConversationIndexexplicitly defined on MSDN here

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

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