Объект получателя сохраняется в самом сообщении в виде строки в таблице получателей. Recipient.Name
соответствует PR_DISPLAY_NAME
. Свойство PR_ENTRYID
в этой строке (присутствует, если получатель разрешен) указывает на объект адресной книги. Вот что возвращает Recipient.AddressEntry
- он использует PR_ENTRYID
получателя для вызова IAddrBook::OpenEntry
.
Возвращенный AddressEntry.Name
теоретически может отличаться от Recipient.Name
(один происходит из объекта адресной книги, а другой - из PR_DISPLAY_NAME
в таблице получателей сообщения). ExchangeUser
по сути является расширением объекта AddressEntry
со специфическими для Exchange свойствами, поэтому ExchangeUser.Name
должно совпадать с AddressEntry.Name
.
Вы можете увидеть это, используя OutlookSpy - выберите сообщение, перейдите на вкладку GetRecipientTable. Щелкните правой кнопкой мыши свойство PR_ENTRYID
и выберите IMAPISession::OpenEntry
. Вы также можете отредактировать свойство PR_DISPLAY_NAME
для чего-то отличного от объекта GAL. PR_DISPLAY_TO
свойство сообщения будет отражать имя нового получателя при сохранении сообщения.
У Sam Ruby есть хороший слайд-шоу с существенными изменениями: Ruby 1.9: Что Ожидать
Только для выделения нескольких вещей, которые могли взломать код:
Я предполагаю, что это зависит, на какой версии Вы надеетесь поддерживать совместимость с. ЖУРНАЛ ИЗМЕНЕНИЙ описывает главные версии начиная с последнего обновления включая изменения синтаксиса, улучшений и bugfixes
Некоторые вещи назад совместимы, но многие не.
Для близкого полного обзора всех изменений (включая примеры) в 1.9.x, проверьте Блог Eigenclass последний снимок archive.org блога Eigenclass.