2015-05-29 2 views
0

Использование функции OpenSharedItem для чтения файлов .msg и возникли проблемы с определением получателя сообщения электронной почты, если у получателя было изменение имени после сохранения файла.OpenSharedItem locating recipient

Если файл .msg сохраняется на диске, я могу прочитать PR_RECEIVED_BY_EMAIL_ADDRESS, чтобы вернуть получающий адрес электронной почты в формате адреса Exchange, но если у человека было изменение имени, CN = больше не совпадает.

Я использую ниже, чтобы прочитать обратно получать сообщения электронной почты, пока я не столкнулся с этой проблемой:

Outlook.PropertyAccessor propAccess = mailItem.PropertyAccessor; 
propAccess.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x0076001E"); 

Возвращает адрес Exchange, как: /O = Организация/OU = Биржи Административная группа/CN = Получатели/CN =

Есть ли способ разрешения старого адреса на текущее отображаемое имя?

Любые предложения будут оценены.

ответ

1

Во-первых, проверьте наличие свойства PR_RECEIVED_BY_ENTRYID (вы можете сделать это в OutlookSpy - нажмите OpenIMsgOnIStg). Если он присутствует, прочитайте свойство PR_RECEIVED_BY_ENTRYID (имя DASL http://schemas.microsoft.com/mapi/proptag/0x003F0102), используя PropertyAccessor.GetProperty, преобразуйте его в шестнадцатеричную строку с использованием PropertyAccessor.BinaryToString, затем используйте его для вызова Namespace.GetAddressEntryFromID. Затем вы можете получить текущее имя из свойства AddressEntry.Name. Будьте готовы обрабатывать ошибки, если свойство отсутствует или если GetAddressEntryFromID не удается (если запись исчезла или если вы открываете профиль, у которого нет исходного сервера Exchange).

Смежные вопросы