我使用联系人群组与联系人列表中的成员。
每当联系人列表中的联系人被删除时,此前添加的成员仍然存在于联系人组中,直到我点击"立即更新"在Outlook中打开联系人组进行编辑。然后会出现一个弹出窗口,询问我是否要删除不再存在的成员。
由于我使用多个联系人组,因此我不想单独更新每个联系人组,而是使用基于EWS托管API的后台作业。到目前为止,我已设法选择每个联系人组,显示成员'电子邮件地址,但我不知道如何完成此操作"立即更新" outlook的按钮功能!使用AlwaysOverwrite
的普通更新方法有效,但不能执行我想要的操作:删除不存在的联系人。
(顺便说一句,联系人组/联系人列表位于公共文件夹中。)
答案 0 :(得分:0)
EWS不公开该功能。从本质上讲,Outlook会尝试按条目ID检索联系人,当它失败时,它会提示您将其删除。您可以实现类似的功能(获取每个电子邮件地址,尝试将其解析回联系人等)。
答案 1 :(得分:0)
## $service excahnge service referend
## $folder .. ExchangeFolder where group and contacts are
## $group ... instance of contact group
$members = $service.ExpandGroup($group.id)
for($l=0;$l -lt $members.members.count;$l++) {
$curMember = $members.members[$l]
$objViewUser = New-Object Microsoft.Exchange.WebServices.Data.ItemView(1)
$curEmail = $members.members[$l].address
## check if there still exists a contact with this email-address
$searchFilterEA1 = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+ContainsSubstring([Microsoft.Exchange.WebServices.Data.ContactSchema]::EmailAddress1,$curEmail)
$resultContact = $folder.FindItems($searchFilterEA1,$objViewUser).Items.Count
if ($resultContact -eq 0) {
"delete Contact $curEmail"
???????
}
}
}