【发布时间】:2014-07-24 10:36:16
【问题描述】:
我目前正在创建一个应用程序,该应用程序使用 Outlook 以及我公司中的 Exchange 服务器/活动目录来创建邮件(因此我已经在这里遇到了一些其他问题)。
我目前正在尝试读取 GAL,以便在通过我的应用程序发送邮件时使用它。从到目前为止我所看到的解决方案中,在我看来,我从活动目录读取邮件地址而不是连接到交换服务器的变体(我首先尝试了 Outlook,但除了只获取类型为“ EX”,因此它们存储在交换服务器上,我在那里没有得到太多信息)。
到目前为止,我所做的是获得对活动目录的访问权限并从那里读取所有用户
DirectorySearcher objsearch = new DirectorySearcher();
String strrootdse = objsearch.SearchRoot.Path;
DirectoryEntry objdirentry = new DirectoryEntry(strrootdse);
objsearch.Filter = "(& (mailnickname=*)(objectClass=user))";
objsearch.SearchScope = System.DirectoryServices.SearchScope.Subtree;
objsearch.PropertiesToLoad.Add("cn");
objsearch.PropertiesToLoad.Add("mail");
objsearch.PropertyNamesOnly = true;
objsearch.Sort.Direction = System.DirectoryServices.SortDirection.Ascending;
objsearch.Sort.PropertyName = "cn";
SearchResultCollection colresults = objsearch.FindAll();
List<String> arrGal = new List<String>();
foreach (SearchResult objresult in colresults)
{
arrGal.Add(objresult.GetDirectoryEntry().Properties["cn"].Value + ": " + objresult.GetDirectoryEntry().Properties["mail"].Value);
}
现在查看活动目录后,我看到还有代理,并且(至少在我的公司)“邮件”属性不一定是代理中列出的邮件地址之一。
于是我找到了这两个属性:msExchShadowProxyAddresses、proxyAddresses
从我到目前为止看到的样本来看,它们看起来是相同的,但即使搜索我也没有在网上找到任何东西。
因此,当我尝试从活动目录中获取 GAL 时,我的问题是我可以同时使用这两个属性(因此它们始终相同)还是应该只使用 ShadowProxy 属性,还是有什么我需要特别注意的有考虑吗?
【问题讨论】:
-
您究竟为什么要尝试 AD 而不是 Outlook 对象模型。究竟什么是您无法使用 OOM 检索的?
-
我首先尝试使用 Outlook 互操作功能。但无论我做了什么,我从来没有收到 GAL 中项目的邮件,而只有项目的“名称”以及来自交换服务器的信息(类型:“EX”)。如果我能够通过 Outlook 互操作获得邮件地址(包括代理邮件地址),但似乎不可能(因为其他人使用了类似的代码并且它起作用了,我猜这里的交换+AD 是如何配置的),我会非常喜欢它(我无法影响)是它无法从那个方向工作的原因。
标签: c# email active-directory outlook exchange-server