是否可以使用Office 365电子邮件的Java Exchange服务API将组成员添加到组?

时间:2015-10-28 19:39:37

标签: java exchangewebservices

我正在使用Java API进行交换Web服务。下面是我目前从一个组中获取所有组成员的代码,但我想知道是否可以在代码中向组中添加成员。

    ExchangeService service= instance.getEgrsEmailConnection();
    ExpandGroupResults myGroupMembers = service.expandGroup("testgroupone@usepa.onmicrosoft.com");
    myGroupMembers.getMembers();

此代码根据该群组的电子邮件地址获取一个群组,但我无法想到添加成员的方法。任何提示都会有所帮助,谢谢。

我使用的api是:ews-java-api-1.3-SNAPSHOT.jar

2 个答案:

答案 0 :(得分:1)

如果testgroupone@usepa.onmicrosoft.com是分发列表(例如,通用分发组UDG或已启用邮件的通用安全组),则不存在允许您修改这些类型的组的成员的EWS操作。为此,您需要使用LDAP或Exchange命令行管理程序。在EWS中,您只能修改联系人组,它们是邮箱或公用文件夹中存在的Exchange存储对象。

看起来您使用的是Office365,因此我建议您使用图谱API https://msdn.microsoft.com/en-us/library/azure/hh974478.aspx,您可以使用REST界面轻松管理来自Java https://azure.microsoft.com/en-us/documentation/articles/active-directory-code-samples/的组

干杯 格伦

答案 1 :(得分:0)

我切换到使用联系人组而不是常规组,并发现如果有人遇到像我这样的问题,如何添加和删除:

ItemView view = new ItemView(111);
    //Get all items in the Contacts folder
    FindItemsResults<Item> items = service.findItems(WellKnownFolderName.Contacts, view);

    for(Item contactItem: items)
    {
        //If the item is a contactGroup then enter.
        if(contactItem instanceof ContactGroup)
        {
            PropertySet set = new PropertySet(BasePropertySet.FirstClassProperties);
            ContactGroup currentContactItem = ContactGroup.bind(service, contactItem.getId(), set);

            GroupMemberCollection members = currentContactItem.getMembers();
            Iterator<GroupMember> memberList = members.iterator();
            ArrayList<GroupMember> removePerson = new ArrayList<GroupMember>();
            ArrayList<GroupMember> addPerson = new ArrayList<GroupMember>();
            while(memberList.hasNext())
            {
                GroupMember current = memberList.next();

                removePerson.add(current);
                if(current.getAddressInformation().getAddress().equalsIgnoreCase("test@gmail.com")) 
                {
                    addPerson.add(current); 
                }
            }

            for(GroupMember deletion: removePerson)
            {
                boolean happen = members.remove(deletion);
                if(happen)
                {
                    System.out.println("YESSS");
                }
            }
            for(GroupMember addition: addPerson)
            {
                members.add(addition);
            }
            if(removePerson.size() > 0 || addPerson.size() > 0)
            {
                currentContactItem.update(ConflictResolutionMode.AlwaysOverwrite);
            }

        }
    }