c# - 将新联系人添加到现有联系人组 ews api

标签 c# outlook contacts exchangewebservices

在过去的 1.5 天里,我一直在尝试弄清楚这个 API,但现在我正在努力将新创建的联系人添加到现有的组中。

我第一次运行程序时使用以下代码行创建了一个组:

    public static ContactGroup CreateGroup(ExchangeService service)
    {
        // Create a new contact group object.
        ContactGroup myContactGroup = new ContactGroup(service);

        // Give the group a name.
        myContactGroup.DisplayName = "Test Contact Group";

        // Save the group.
        myContactGroup.Save();

        return myContactGroup;
    }

然后我使用以下代码将联系人添加到组中:

    public static void AddContactToGroup(ContactGroup myContactGroup, Contact contact)
    {
        myContactGroup.Members.AddContactEmailAddress(contact, EmailAddressKey.EmailAddress2);
        myContactGroup.Update(ConflictResolutionMode.AlwaysOverwrite);

现在我想使用以下代码创建一个新联系人:

    public static Contact tempCont(ExchangeService service)
    {
        Contact contact = new Contact(service);
        contact.GivenName = "Jonas";
        contact.Surname = "Jonassen";
        contact.FileAsMapping = FileAsMapping.SurnameCommaGivenName;
        contact.PhoneNumbers[PhoneNumberKey.HomePhone] = "12345678";
        contact.EmailAddresses[EmailAddressKey.EmailAddress1] = new EmailAddress("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="016b6e6f6072416b6e6f607272646f2f656a" rel="noreferrer noopener nofollow">[email protected]</a>");

        PhysicalAddressEntry paEntry1 = new PhysicalAddressEntry();
        paEntry1.Street = "123 Main Boulevard";
        paEntry1.City = "Kbh";
        paEntry1.State = "";
        paEntry1.PostalCode = "1200";
        paEntry1.CountryOrRegion = "Denmark";
        contact.PhysicalAddresses[PhysicalAddressKey.Home] = paEntry1;

        contact.Save();

        return contact;
    }

现在我想将这个新联系人添加到现有的 contactGroup 中。问题是,我无法获取“myContactGroup”。我猜我必须找到 ContactGroup 的 ID,或者可能是完全不同的东西。老实说,我不知道如何解决这个问题。任何帮助将不胜感激!

最佳答案

您需要做的是找到要添加联系人的 ContactGroup,例如使用 SearchFilter 来执行此操作,然后只需使用“添加成员”方法将联系人添加到组中,例如

            ItemView ItemView = new ItemView(1);
        SearchFilter cntGroup = new SearchFilter.IsEqualTo(ItemSchema.ItemClass, "IPM.DistList");
        SearchFilter cntGroupName = new SearchFilter.IsEqualTo(ContactGroupSchema.DisplayName, "Test Contact Group");
        SearchFilter sfCol = new SearchFilter.SearchFilterCollection(LogicalOperator.And) { cntGroup, cntGroupName };

        FolderId ContactFolder = new FolderId(WellKnownFolderName.Contacts, "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="611412041321050e0c00080f4f020e0c" rel="noreferrer noopener nofollow">[email protected]</a>");
        FindItemsResults<Item> fiCntResults = service.FindItems(ContactFolder, sfCol, ItemView);
        if (fiCntResults.Items.Count == 1)
        {
            ContactGroup contactGroup = (ContactGroup)fiCntResults.Items[0];
            Contact Contact2 = new Contact(service);
            Contact2.EmailAddresses[EmailAddressKey.EmailAddress1] = new EmailAddress("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b2d0ded3daf2d0ded3da9cd6d9" rel="noreferrer noopener nofollow">[email protected]</a>");
            Contact2.Subject = "Blah";
            Contact2.Save();
            GroupMember gm = new GroupMember(Contact2,EmailAddressKey.EmailAddress1);             

            contactGroup.Members.Add(gm);
            contactGroup.Update(ConflictResolutionMode.AlwaysOverwrite);

        }

干杯 格伦

关于c# - 将新联系人添加到现有联系人组 ews api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25266025/

相关文章:

mysql - 带过滤的电子邮件处理

c# - 如何使用 Outlook 后期绑定(bind)将附件添加到 mailitem

c# - 从游戏对象 UNITY C# 创建网格

c# - WCF,找不到契约(Contract)名称 'IMetadataExchange'

html - 如何在 Outlook 的表格中将图像居中

android - 在以编程方式添加联系人时,如何让联系人正确聚合?

active-directory - 访问电子邮件和移动客户端中的联系人 : LDAP or CardDAV?

安卓更改联系人图片

c# - DataContractJsonSerializer 和 JsonConvert 给出不同的结果

c# - 什么时候调用 Dispose 方法?