我正在运行 Exchange Server 2010,并且想以编程方式将联系人添加到服务器中。如何实现这一点?
最好用 Java 来完成,但是 VB6 也可以。
答案1
当您说“将联系人添加到服务器”时,您到底是什么意思?
Exchange 本身不包含联系人。您可以将联系人添加到 Active Directory,以便在全局地址簿中可见全部交换用户。这里有示例代码来执行此操作这里。
或者,您可以将联系人添加到 Outlook 中单个用户的联系人中,这将使该单个用户可以访问这些联系人 - 如果您想让多个人访问这些联系人,当然可以为多个用户运行此脚本。没有测试过这个,但有示例代码可用这里帮助您入门。
如果您选择第一种方式,并且需要添加大量联系人,那么您最终可能会得到一个非常大且难以使用的全局地址列表 (GAL),并且令人不快的是,原本供内部使用的电子邮件只会发送给联系人列表中的外部人员。可以通过创建多个 GAL 视图来防止这种情况 - 一个视图包含联系人,另一个视图仅包含 Windows 帐户(又称“完整”Exchange 用户)。
您可以使用 Exchange 命令行管理程序按如下方式操作 GAL(示例来自技术网络论坛)
Get-GlobalAddressList "Default Global Address List" |FL *Filter
您将会看到如下过滤器:
{(别名 -ne $null -and(ObjectClass -eq'user' -or对象类 -eq ‘接触’- 或 ObjectClass -eq 'msExchSystemMailbox' - 或 ObjectClass -eq 'msExchDynamicDistributionList' - 或 ObjectClass -eq 'group' - 或 ObjectClass -eq 'publicFolder'))}
我已突出显示默认 GAL 过滤器也包含联系人对象,因为条件对象类 -eq ‘接触’。
因此,如果您希望默认 GAL 排除这些联系人对象,那么您必须像这样重置 GAL 的收件人过滤器:
Set-GlobalAddressList "默认全局地址列表" -RecipientFilter {(Alias -ne $null -and (ObjectClass -eq 'user' -or ObjectClass -eq 'msExchSystemMailbox' -or ObjectClass -eq 'msExchDynamicDistributionList' -or ObjectClass -eq 'group' -or ObjectClass -eq 'publicFolder'))}
然后您可以为联系人创建一些其他 GAL,类似于:
New-GlobalAddressList“联系人全局地址列表”-RecipientFilter {(Alias -ne $null -and ObjectClass -eq'Contact')}
由于我在大学工作,我们尝试过类似上述示例来控制学生在 GAL 中可以看到和看不到的内容,所以我知道这些原则是有效的,你只需要摆弄和测试过滤器,直到得到满意的结果。我们使用的是 Exchange 2007,但对于这样的事情,应该不会有任何显著的差异。