如何使用 WPF 业务应用从 Outlook 获取有关当前用户通讯组列表的信息
本文关键字:用户 信息 列表 业务 WPF 何使用 应用 获取 Outlook | 更新日期: 2023-09-27 18:32:20
在我的 WPF 应用中,我需要根据团队启用/禁用功能。团队信息配置为 Outlook 通讯组列表。现在我需要从我的应用程序中检索此信息。
我用谷歌搜索并找到了链接http://msdn.microsoft.com/EN-US/library/office/ff184638(v=office.15).aspx
不幸的是,它无法按原样编译。经过一些研究,我可以通过将其更改为
currentUser = new Outlook.Application().Session.CurrentUser.AddressEntry;
但是,这仅在打开 Outlook 时有效,但在关闭 Outlook 时会引发异常。知道吗?
最后我设法破解了它。显然我们需要简要启动 Outlook 应用程序,解决方案在链接中进行了解释https://groups.google.com/forum/#!msg/microsoft.public.outlook.program_vba/lLJwbwwl-XU/gRuQYRpJtxEJ
因此,我稍微修改了我的代码GetCurrentUserMember()以适应此更改。现在它工作得很好。在 Outlook 2007 和 2010 中进行测试。
完整的解决方案,
private List<string> GetCurrentUserMembership()
{
Outlook.Application outlook = new Outlook.Application();
Outlook.MailItem oMsg = (Outlook.MailItem)outlook.CreateItem(Outlook.OlItemType.olMailItem);
Outlook.Inspector oInspector = oMsg.GetInspector;
//session.Logon("", "", false, false);
var sb = new List<string>();
Outlook.AddressEntry currentUser = outlook.Session.CurrentUser.AddressEntry;
if (currentUser.Type != "EX") return sb;
var exchUser = currentUser.GetExchangeUser();
if (exchUser == null) return sb;
var addrEntries = exchUser.GetMemberOfList();
if (addrEntries == null) return sb;
foreach (Outlook.AddressEntry addrEntry in addrEntries)
{
sb.Add(addrEntry.Name);
}
return sb;
}
你能更具体一点吗?代码中出现什么异常(错误消息和错误代码)?
我建议从中断调用链开始,并在单独的行上声明每个属性或方法调用。因此,您会发现触发异常的有问题的属性或方法调用。
很可能需要调用命名空间类的登录方法。例如,你可能会发现 C# 应用自动执行 Outlook (CSAutomateOutlook) 示例项目很有帮助。