Как заметить, что почта является перенаправленной?

У меня особая проблема.

Если мы создаем почту в Outlook, мы добавляем UserProperty, который содержит DataBase-ID нашей Системы, чтобы мы могли связать письмо с представляющим DataBase-Item. В службе, которая читает сообщения в каждом почтовом ящике и автоматически импортирует их, я могу прочитать это свойство с помощью ExtendedPropertyDefinitions. Пока все хорошо...

Если пользователь теперь перенаправляет сообщение в Outlook, Olk копирует UserProperty в новое сообщение. И теперь мои проблемы начались. Теперь моя Служба считает, что новое сообщение также связано с нашей базой данных и обновляет запись в базе данных, добавляя новое тело и новую тему.

Так кто-нибудь теперь, как узнать, является ли сообщение переадресованным или как сказать Outlook не копировать свойство пользователя в перенаправленное (новое) сообщение?

Спасибо. сойка

О чем мы думали, но не работает для нашего случая
- второе свойство пользователя, содержащее простой тег linke "fromSystem". Потому что это тоже будет скопировано.
- второе свойство пользователя, содержащее хэш-сумму, вычисленную из субъекта и тела. Потому что оба могут быть изменены пользователем. Мы просто создаем сообщение, добавляем все свойства и отображаем его. с этого момента мы больше не контролируем, что происходит с почтой, пока служба не обработает ее.

1 ответ

Решение

Ваша служба, использующая EWS, должна проверить ConversationIndex и обновлять базу данных, только если она имеет длину 22 байта (исходное сообщение). Пересылка электронных писем и ответных писем продолжают добавлять 5 байтов (10 символов) к ConversationIndex расширяя его за пределы 22 байтов.

Образцы ConversationIndexes

Оригинал: 01CDD15D80E51C1D4522172840ACA96287DA28A15D97
Ответ:    01CDD15D80E51C1D4522172840ACA96287DA28A15D970000018630
Вперед:  01CDD15D80E51C1D4522172840ACA96287DA28A15D970000018630000000FC30

ConversationIndex представляет последовательный порядок ConversationTopic (по существу, GUID + метка времени). См. Работа с беседами в MSDN. ConversationIndex здесь явно указано на MSDN.

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

Также убедитесь, что вы загружаете EmailMessageSchema.ConversationIndex прежде чем пытаться получить доступ к его значению.

Другие вопросы по тегам