Как заметить, что почта является перенаправленной?
У меня особая проблема.
Если мы создаем почту в 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
прежде чем пытаться получить доступ к его значению.