我正在使用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
答案 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);
}
}
}