获取Outlook 2007中当前用户的电子邮件地址

我有一个用C#编写的Outlook添加。

我想知道如何获得当前用户的电子邮件地址?

谢谢

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

在VS 2010,.NET 4.0,Outlook 2010中测试:

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

取决于“当前用户地址”的定义。

  1. 可以从Appication.Session.CurrentUser (返回Recipient对象)检索Outlook中主帐户的地址。 使用Recipient.Address属性。 但请注意,对于Exchange帐户( Recipient.AddressEntry.Type == "EX" ),您将收到EX类型的地址。 要检索SMTP地址,请使用Recipient.AddressEntry.GetExchangeUser().PrimarySmtpAddress 。 准备好在出现错误时处理空值/exception。

在扩展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对象,可以为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() ,因为ActiveExplorer()可能会返回NullReferenceException ,例如在通过Outlook打开电子邮件时。