簡體   English   中英

在 Outlook 2007 中獲取當前用戶的電子郵件地址

[英]Get the email address of the current user in Outlook 2007

我有一個用 C# 編寫的 Outlook 插件。

我想知道如何或是否可以獲得當前用戶的電子郵件地址?

謝謝

在 VS 2010、.NET 4.0、Outlook 2010 中測試:

var emailAddress = this.Application.ActiveExplorer().Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress;

使用Namespace.CurrentUserhttp : //msdn.microsoft.com/en-us/library/bb220041( Namespace.CurrentUser = office.12).aspx

取決於“當前用戶地址”的定義。

  1. 可以從Appication.Session.CurrentUser (返回Recipient對象)中檢索 Outlook 中主帳戶的地址。 使用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 地址的多值屬性,包括所有代理(別名)地址、EX 和 SMTP)。

  1. 如果配置文件中有多個帳戶,則可以通過多個帳戶發送或接收電子郵件。 在這種情況下使用MailItem.SendUsingAccount (返回Account對象,可以為 null - 在這種情況下使用Application.Session.CurentUser )。 這對於接收、發送或正在編寫的電子郵件( Application.ActiveInspector.CurrentItemApplication.ActiveExplorer.ActiveInlineResponse )均有效。

  2. 可以使用Namespace.Accounts集合(Application.Session.Accounts ) 訪問給定配置文件中的所有帳戶。 可以使用Account.SmtpAddress屬性訪問帳戶的地址。 請注意,Outlook 對象模型僅公開郵件帳戶。 某些商店帳戶(例如 PST)不在集合中,因為即使某些其他帳戶(例如 POP3/SMTP)可以傳送到該商店,它們也沒有固有的用戶身份。 如果要訪問所有帳戶,可以使用Redemption及其RDOSession Accounts集合( RDOAccounts對象)。

在擴展 MAPI 級別,帳戶通過IOlkAccountManager接口公開。 如果單擊 IOlkAccountManager 按鈕,則可以在OutlookSpy 中使用它。

  1. 在委托 Exchange 存儲的情況下,存儲所有者不會通過 Outlook 對象模型公開。 您可以使用擴展 MAPI(請注意PR_MAILBOX_OWNER_ENTRYID屬性僅由在線商店公開,它在緩存商店中不可用)。 您可以解析 Exchange 存儲條目 ID 並從中提取 EX 類型地址。 然后,您可以根據 EX 地址構造 GAL 對象條目 ID。 您還可以使用Redemption及其RDOExchangeMailboxStore對象及其Owner屬性訪問商店所有者。

如果您使用普通的 POP/IMAP 服務器,您將獲得電子郵件地址:Application.Session.CurrentUser.AddressEntry.Address;

使用 Exchange Server,您可以獲得電子郵件地址: Application.Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress;

嘗試outlookObject.ActiveExplorer().Session.CurrentUser.Address 在 VS10、Outlook 2007、.NET 4.0 上為我工作

任何路過的人,我強烈建議使用Application.Session.CurrentUser.AddressEntry.Address而不是使用Application.ActiveExplorer().Session的任何東西,因為ActiveExplorer()可能會返回NullReferenceException ,例如在通過 Outlook 打開電子郵件時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM