[英]Get all email address of an account in Outlook 2007 in C# or vb
[英]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.CurrentUser
: http : //msdn.microsoft.com/en-us/library/bb220041( Namespace.CurrentUser
= office.12).aspx
取決於“當前用戶地址”的定義。
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)。
如果配置文件中有多個帳戶,則可以通過多個帳戶發送或接收電子郵件。 在這種情況下使用MailItem.SendUsingAccount
(返回Account
對象,可以為 null - 在這種情況下使用Application.Session.CurentUser
)。 這對於接收、發送或正在編寫的電子郵件( Application.ActiveInspector.CurrentItem
或Application.ActiveExplorer.ActiveInlineResponse
)均有效。
可以使用Namespace.Accounts
集合(Application.Session.Accounts
) 訪問給定配置文件中的所有帳戶。 可以使用Account.SmtpAddress
屬性訪問帳戶的地址。 請注意,Outlook 對象模型僅公開郵件帳戶。 某些商店帳戶(例如 PST)不在集合中,因為即使某些其他帳戶(例如 POP3/SMTP)可以傳送到該商店,它們也沒有固有的用戶身份。 如果要訪問所有帳戶,可以使用Redemption及其RDOSession 。 Accounts
集合( RDOAccounts對象)。
在擴展 MAPI 級別,帳戶通過IOlkAccountManager接口公開。 如果單擊 IOlkAccountManager 按鈕,則可以在OutlookSpy 中使用它。
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.