回答
使用Namespace.CurrentUser
:http://msdn.microsoft.com/en-us/library/bb220041(v=office.12).aspx
经测试,在VS 2010,.NET 4.0,展望2010年:
var emailAddress = this.Application.ActiveExplorer().Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress;
为什么不缩短到var emailAddress = this.Application.Session.CurrentUser.AddressEntry.Address?您还需要检查AddressEntry.GetExchangeUser是否有效 - 对于配置文件中没有Exchange的用户,GetExchangeUser将返回null。 – 2012-05-11 22:30:43
尝试outlookObject.ActiveExplorer().Session.CurrentUser.Address
。通过打开电子邮件时为我工作在VS10,Outlook 2007中,.NET 4.0
任何人经过,我强烈建议使用 Application.ActiveExplorer().Session
, 作为ActiveExplorer()
可能会返回一个NullReferenceException
使用Application.Session.CurrentUser.AddressEntry.Address
,而不是任何东西,例如外表。
如果您使用的是正常的POP/IMAP服务器,您将收到的电子邮件地址为: Application.Session.CurrentUser.AddressEntry.Address;
使用Exchange Server,您将收到电子邮件地址: Application.Session.CurrentUser.AddressEntry.GetExchangeUser()。PrimarySmtpAddress;
取决于“当前用户地址”的定义。
- 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地址,包括所有代理(别名)地址)。
如果配置文件中有多个帐户,则可以通过多个帐户发送或接收电子邮件。在这种情况下,使用
MailItem.SendUsingAccount
(返回Account
对象,可以为空 - 在这种情况下使用Application.Session.CurentUser
)。这对收到,发送或正在撰写的电子邮件都有效(Application.ActiveInspector.CurrentItem
或Application.ActiveExplorer.ActiveInlineResponse
)。给定配置文件中的所有帐户都可以使用
Namespace.Accounts
集合(Application.Session.Accounts
访问)。帐户的地址可以使用Account.SmtpAddress
属性进行访问。 请注意,Outlook对象模型仅公开邮件帐户。某些商店帐户(如PST)不在收藏夹中,因为即使其他某些帐户(如POP3/SMTP)可以将其传送到该商店,它们也没有固有的用户身份。如果您想访问所有帐户,则可以使用Redemption及其RDOSession。帐户收集(RDOAccounts对象)。
在扩展MAPI级别上,帐户通过IOlkAccountManager接口公开。如果您单击IOlkAccountManager按钮,您可以在OutlookSpy中使用它。
- 在委托Exchange存储的情况下,存储所有者不会通过Outlook对象模型公开。您可以使用扩展MAPI(请注意,PR_MAILBOX_OWNER_ENTRYID属性仅由在线商店公开,但在缓存存储中不可用)。您可以解析Exchange存储条目标识并从中提取EX类型地址。然后,您可以构造给定EX地址的GAL对象条目标识。您还可以使用Redemption及其RDOExchangeMailboxStore对象及其
Owner
属性访问店主。
- 1. 如何从Outlook 2007中获取发送电子邮件地址
- 2. Outlook REST API - 获取登录用户的电子邮件地址
- 3. 如何获取EWS中当前登录用户的电子邮件地址?
- 4. 如何在Outlook 2007中复制电子邮件地址
- 5. 获取当前登录的用户的电子邮件地址timming了
- 6. 获取当前登录用户的电子邮件地址保存框
- 7. 使用VBA从Outlook电子邮件正文中提取电子邮件地址?
- 8. Outlook 2007中的电子邮件
- 9. 在Cocoa中获取用户的默认电子邮件地址
- 10. CakePHP的:使用电子邮件地址和当用户输入自己的电子邮件地址的形式
- 11. 从outlook解放电子邮件地址
- 12. 从给定的电子邮件地址获取电子邮件地址DirectoryEntry
- 13. 从Samaccountname获取电子邮件地址
- 14. Outlook VBA正则表达式提取电子邮件地址中的用户名
- 15. 获取Facebook用户的公共电子邮件地址
- 16. 如何获取Android用户的电子邮件地址?
- 17. 获取用户输入的电子邮件地址
- 18. TeamCity如何获取Subversion用户的电子邮件地址?
- 19. 如何在Redmine中获取当前用户电子邮件?
- 20. 将电子邮件地址添加到MailItem.To在Outlook 2007中使用分号addin
- 21. 用Facebooker获取用户电子邮件地址?
- 22. 使用Google OpenID获取用户电子邮件地址
- 23. 使用AngularFire获取用户电子邮件地址列表
- 24. Powerbi用户的电子邮件地址
- 25. 从iPhone地址簿中获取电子邮件地址
- 26. 如何获取电子邮件地址作为用户名每
- 27. Google Apps脚本 - 获取用户电子邮件地址
- 28. AppEngine DB通过电子邮件地址获取用户
- 29. 从SAMaccount获取用户电子邮件地址
- 30. 如何从oauth获取用户名或电子邮件地址?
这就是VBA,而不是C#。我似乎无法找到在C# – electricsheep 2011-01-21 17:31:01
你可以尝试`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