Проблема в том, что Exchange хранит адрес отправителя как обычную версию адреса SMTP для внешних пользователей, но для пользователей Exchange он использует адрес MS Exchange. Чтобы получить обычный SMTP-адрес, вы должны найти пользователя Exchange и получить его обычный SMTP-адрес электронной почты.
Вы можете посмотреть пакет extrospectr
на github. Я не использовал его, но похоже, что он даст вам чистый почтовый ящик, как вы ищете.
Если вы посмотрите на функцию .lookup_exchange_sender
в файле read_inbox.R
, она показывает, как они обрабатывались ища адрес. Сначала вы должны посмотреть, какого типа пользователь Sender
(что вы можете сделать, получив свойство Sender
объекта MailItem, а затем свойство AddressEntryUserType , которое имеет this перечисление). Это заканчивается как emails(2)$Sender()$AddressEntryUserType()
.
Затем, если это пользователь Exchange, вам нужно получить свойство Sender
объекта MailItem (который является AddressEntry ) и затем использовать метод GetExchangeUser
в AddressEntry для возврата объекта ExchangeUser . После этого вам просто нужно получить доступ к свойству PrimarrySMTPAddress ExchangeUser. Когда вы соединяете все это вместе, это выглядит так: emails(2)$Sender()$GetExchangeUser()$PrimarySMTPAddress()
.
Ссылка на extrospectr
на github: https://github.com/aecoleman/extrospectr
Это объясняет методологию Outlook для того, что хранится в свойстве электронной почты отправителя: Свойство SenderEmailAddress не содержит стандартный адрес электронной почты для внутренних контактов