2011-01-21 149 views

回答

5
+1

這就是VBA,而不是C#。我似乎無法找到在C# – electricsheep 2011-01-21 17:31:01

+4

你可以嘗試`myEmailAddress = this.ActiveExplorer()。Session.CurrentUser.EmailAddress;`或嘗試其他解決方案在這裏:http://social.msdn.microsoft.com/forums/en- US/vsto/thread/d2d9bf23-e27f-4f30-9199-42833d6919a4/ – acconrad 2011-01-21 17:45:27

12

經測試,在VS 2010,.NET 4.0,展望2010年:

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

爲什麼不縮短到var emailAddress = this.Application.Session.CurrentUser.AddressEntry.Address?您還需要檢查AddressEntry.GetExchangeUser是否有效 - 對於配置文件中沒有Exchange的用戶,GetExchangeUser將返回null。 – 2012-05-11 22:30:43

0

嘗試outlookObject.ActiveExplorer().Session.CurrentUser.Address。通過打開電子郵件時爲我工作在VS10,Outlook 2007中,.NET 4.0

0

任何人經過,我強烈建議使用 Application.ActiveExplorer().Session, 作爲ActiveExplorer()可能會返回一個NullReferenceException使用Application.Session.CurrentUser.AddressEntry.Address ,而不是任何東西,例如外表。

2

如果您使用的是正常的POP/IMAP服務器,您將收到的電子郵件地址爲: Application.Session.CurrentUser.AddressEntry.Address;

使用Exchange Server,您將收到電子郵件地址: Application.Session.CurrentUser.AddressEntry.GetExchangeUser()。PrimarySmtpAddress;

5

取決於「當前用戶地址」的定義。

  1. 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地址,包括所有代理(別名)地址)。

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

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

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

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