如何使用 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 时会引发异常。知道吗?

如何使用 WPF 业务应用从 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) 示例项目很有帮助。