Зависит от определения «текущий адрес пользователя».
- Адрес основной учетной записи в Outlook можно получить из
Appication.Session.CurrentUser
(возвращает Recipient
объект). Используйте Recipient.Address
свойство. Обратите внимание, что для учетной записи Exchange (Recipient.AddressEntry.Type == "EX"
) вы получите адрес типа EX. Чтобы получить SMTP-адрес, используйте Recipient.AddressEntry.GetExchangeUser().PrimarySmtpAddress
. Будьте готовы к обработке нулей / исключений в случае ошибок.
На уровне расширенного MAPI (C ++ или Delphi) используйте IMAPISession::QueryIdentity
(вы можете проверить это в OutlookSpy - нажмите кнопку IMAPISession, затем QueryIdentity). Затем вы можете прочитать свойства PR_ADDRTYPE
("EX" против "SMTP") и PR_EMAIL_ADDRESS
(когда PR_ADDRTYPE
= "SMTP") или (в случае Exchange) PR_SMTP_ADDRESS
(присутствие не гарантируется) и PR_EMS_AB_PROXY_ADDRESSES
(многозначным свойством будут адреса Exchange, включая все адреса прокси (псевдонимов)).
В случае нескольких учетных записей в профиле, электронное письмо может быть отправлено или получено через несколько учетных записей. В этом случае используйте MailItem.SendUsingAccount
(возвращает Account
объект, может быть нулевым - в этом случае используйте Application.Session.CurentUser
). Это действительно как для полученных, отправленных или составляемых писем (Application.ActiveInspector.CurrentItem
или Application.ActiveExplorer.ActiveInlineResponse
).
Все учетные записи в данном профиле могут быть доступны с помощью Namespace.Accounts
collection (Application.Session.Accounts
). Адрес учетной записи можно получить с помощью свойства Account.SmtpAddress
.
Обратите внимание, что объектная модель Outlook предоставляет только почтовые учетные записи. Некоторые учетные записи магазина (например, PST) отсутствуют в коллекции, поскольку у них нет внутренней идентификационной информации пользователя, даже если некоторые другие учетные записи (например, POP3 / SMTP) могут доставлять в это хранилище. Если вы хотите получить доступ ко всем учетным записям, вы можете использовать Redemption и его RDOSession .Accounts collection ( RDOAccounts object).
На уровне Extended MAPI учетные записи предоставляются через интерфейс IOlkAccountManager . Вы можете поиграть с ним в OutlookSpy , если нажмете кнопку IOlkAccountManager.
- В случае делегированных хранилищ Exchange владелец хранилища не отображается через объектную модель Outlook. Вы можете использовать расширенный MAPI (обратите внимание, что свойство PR_MAILBOX_OWNER_ENTRYID доступно только в онлайн-магазине, оно недоступно в кэшированном хранилище). Вы можете проанализировать идентификатор записи хранилища Exchange и извлечь из него адрес типа EX. Затем вы можете создать идентификатор записи объекта GAL по адресу EX. Вы также можете получить доступ к владельцу магазина, используя Redemption и его RDOExchangeMailboxStore объект и его свойство
Owner
.