ele*_*eep 19 .net c# exchange-server office-2007 outlook-addin
我有一个用C#编写的Outlook添加.
我想知道如何获得当前用户的电子邮件地址?
谢谢
Lee*_*som 14
在VS 2010,.NET 4.0,Outlook 2010中测试:
var emailAddress = this.Application.ActiveExplorer().Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress;
Run Code Online (Sandbox Code Playgroud)
使用Namespace.CurrentUser
:http://msdn.microsoft.com/en-us/library/bb220041(v = 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)。
如果配置文件中有多个帐户,则可以通过多个帐户发送或接收电子邮件。在这种情况下 use MailItem.SendUsingAccount
(返回Account
对象,可以为 null - 在这种情况下 use 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
属性访问商店所有者。 归档时间: |
|
查看次数: |
21444 次 |
最近记录: |