VSTO Outlook加载项如何从Outlook分发列表中检索Exchange分发列表成员

问题描述

|| 我有VSTO加载项,可从mailitem获取收件人并将其保存在我们的用户列表中。 如果是交换分发列表或作为联系人的交换联系人,则可以通过从这两个地址中提取smtp邮件地址来正常工作。为此,Outlook对象模型起作用。 但是,当将Exchange通讯组列表添加为Outlook通讯组列表中的成员并将邮件发送到此本地通讯组列表时,就会出现问题。有什么方法可以从此嵌套通讯组列表中提取每个联系人的smtp地址。 到目前为止,我有用户DistListItem.GetMember(i)方法来获取此通讯组列表的成员。它提供了一个收件人对象,当我尝试从该对象访问属性member.AddressEntry.AddressEntryUserType时,它将引发异常“找不到该项目”。 有谁知道我如何从该接收者对象中获得通讯组列表成员类型或entryId?     

解决方法

        
    private void GetDistributionListMembers()
{
    Outlook.SelectNamesDialog snd =
        Application.Session.GetSelectNamesDialog();
    Outlook.AddressLists addrLists =
        Application.Session.AddressLists;
    foreach (Outlook.AddressList addrList in addrLists)
    {
        if (addrList.Name == \"All Groups\")
        {
            snd.InitialAddressList = addrList;
            break;
        }
    }
    snd.NumberOfRecipientSelectors =
        Outlook.OlRecipientSelectors.olShowTo;
    snd.ToLabel = \"D/L\";
    snd.ShowOnlyInitialAddressList = true;
    snd.AllowMultipleSelection = false;
    snd.Display();
    if (snd.Recipients.Count > 0)
    {
        Outlook.AddressEntry addrEntry =
            snd.Recipients[1].AddressEntry;
        if (addrEntry.AddressEntryUserType ==
            Outlook.OlAddressEntryUserType.
            olExchangeDistributionListAddressEntry)
        {
            Outlook.ExchangeDistributionList exchDL =
                addrEntry.GetExchangeDistributionList();
            Outlook.AddressEntries addrEntries =
                exchDL.GetExchangeDistributionListMembers();
            if (addrEntries != null)
                foreach (Outlook.AddressEntry exchDLMember
                    in addrEntries)
                {
                    Debug.WriteLine(exchDLMember.Name);
                }
        }
    }
}
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...