email - 如何通知邮件是否为转发邮件?

标签 email outlook exchangewebservices

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

如果我们在 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/

相关文章:

java - GreenMail 不返回密件抄送收件人地址

email - Outlook 邮箱 SMTPDataError 550 传递结果横幅

email - 获取 Outlook 中已发送邮件的 MessageID

c# - 尝试使用 Exchange Web 服务获取电子邮件时出现 ServiceObjectPropertyException?

PHP 邮件未显示在 Gmail 中,但显示在 Hotmail 和其他第 3 方/ISP 帐户中

email - centos 7 同时在本地和远程保存 rsyslog

php - 使用xampp服务器在php中发送电子邮件?

c# - 如何在不一直打开 Outlook 的情况下开发和测试 Outlook 加载项的一部分?

c# - Exchange EWS 文件夹同步仅获取编程更改

c# - 按类别搜索 Exchange Server EWS