Vb.net 如何返回与登录用户关联的主要电子邮件地址';您当前的Outlook配置文件是什么?

Vb.net 如何返回与登录用户关联的主要电子邮件地址';您当前的Outlook配置文件是什么?,vb.net,outlook,outlook-2007,Vb.net,Outlook,Outlook 2007,我知道,问我自己的电子邮件地址有点奇怪,我会进一步解释 我正在为Outlook 2007编写一个COM加载项。其中一个sub生成并向特定地址发送电子邮件,这一切都很正常。 但是,我需要有一个选项,让发件人能够将自己包括在收件人列表中。 由于不止一个人将运行此功能,我不能仅手动设置发件人的电子邮件地址,而更愿意在表单上添加复选框以启用此功能 唯一让我困扰的是如何找到发送电子邮件的人的电子邮件地址。我可以通过一个针对登录用户的广告查询来实现,但这需要对非域用户起作用,因此需要另一种方法 简而言之:使

我知道,问我自己的电子邮件地址有点奇怪,我会进一步解释

我正在为Outlook 2007编写一个COM加载项。其中一个sub生成并向特定地址发送电子邮件,这一切都很正常。 但是,我需要有一个选项,让发件人能够将自己包括在收件人列表中。 由于不止一个人将运行此功能,我不能仅手动设置发件人的电子邮件地址,而更愿意在表单上添加复选框以启用此功能

唯一让我困扰的是如何找到发送电子邮件的人的电子邮件地址。我可以通过一个针对登录用户的广告查询来实现,但这需要对非域用户起作用,因此需要另一种方法


简而言之:使用VB,如何返回与登录用户当前Outlook配置文件相关联的主电子邮件地址?

使用属性访问器查看以获取mapi属性

如果账户类型为EX, PR_SMTP_地址或it DASL“”

虽然再读你的问题,有些账户是非兑换的吗


Marcus

应用程序.Session.CurrentUser.AddressEntry.GetExchangeUser.PrimarySmtpAddress



RDOSession.CurrentUser.SmtpAddress

如果您使用的是Outlook Redemption,则@bugtussle的解决方案可以工作,但您必须先通过Redemption登录。由于赎回文档非常糟糕,以下是适用于我的完整代码:

RDOSession session = new RDOSession();
session.Logon(null, null, null, true, null, null);
string emailAddress = session.CurrentUser.SMTPAddress;
session.Logoff();
return emailAddress;

RDOSession.CurrentUser.SmtpAddress对我有效-您必须先登录。