我有一个非常特殊的问题。
如果我们在 Outlook 中创建邮件,我们会添加一个 UserProperty,其中包含我们系统的 DataBase-ID,因此我们可以将邮件链接到表示的 DataBase-Item。在读取每个邮箱中的邮件并自动导入它们的服务上,我可以使用 ExtendedPropertyDefinitions 读取此属性。到目前为止一切都很好......
如果用户现在在 Outlook 中转发邮件,Olk 会将 UserProperty 复制到新邮件。现在我的问题开始了。现在我的服务认为新消息也链接到我们的数据库并用新的正文和新的主题更新 DB-Entry。
那么现在有人如何确定邮件是否是转发的邮件,或者如何告诉 Outlook 不要将用户属性复制到转发的(新)邮件?
谢谢。杰
我们所想的,但不适用于我们的案例
- 包含简单标签链接“fromSystem”的第二个用户属性。因为这也会被复制。
- 包含从主题和正文计算的哈希和的第二个用户属性。因为两者都可以由用户更改。我们只是创建消息,添加所有属性并显示它。从现在开始,在服务处理邮件之前,我们不再控制邮件发生的情况。
最佳答案
您使用 EWS 的服务应该检查 ConversationIndex
并且只有在 时才更新数据库22 字节长 (原始来源消息)。转发电子邮件和回复电子邮件不断向 ConversationIndex
追加 5 个字节(10 个字符)将其扩展到 22 个字节以上。
示例对话索引
Original: 01CDD15D80E51C1D4522172840ACA96287DA28A15D97 Reply: 01CDD15D80E51C1D4522172840ACA96287DA28A15D970000018630 Forward: 01CDD15D80E51C1D4522172840ACA96287DA28A15D970000018630000000FC30
ConversationIndex
represents the sequential ordering of the ConversationTopic
(essentially GUID + timestamp). See Working with Conversations on MSDN. ConversationIndex
is explicitly defined on MSDN here.
if (message.ConversationIndex.Length == 22)
{
// update DB body, subject, etc.
}
还要确保您加载了 EmailMessageSchema.ConversationIndex
在尝试访问其值之前。
关于email - 如何通知邮件是否为转发邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13646559/