gpt4 book ai didi

c# - 用于交换的公共(public)文件夹的电子邮件地址列表

转载 作者:太空宇宙 更新时间:2023-11-03 11:52:45 25 4
gpt4 key购买 nike

我如何获得 Exchange 公用文件夹的所有电子邮件地址的列表?

将自行回复,将接受提供的最佳回复。

最佳答案

虽然您作为自己的答案发布的内容会起作用,但阅读您正在使用的方法和对象的文档有助于了解它们的局限性。如果您多次调用此代码,您最终会遇到内存泄漏。 foreach 语句不会在所使用的对象上调用 Dispose(),只会调用它创建的枚举数。下面是搜索目录的一种更好的方法(尽管很少检查错误并且没有异常处理)。

public static void GetPublicFolderList()
{
DirectoryEntry entry = new DirectoryEntry("LDAP://sorcogruppen.no");
DirectorySearcher mySearcher = new DirectorySearcher(entry);
mySearcher.Filter = "(&(objectClass=publicfolder))";
// Request the mail attribute only to reduce the ammount of traffic
// between a DC and the application.
mySearcher.PropertiesToLoad.Add("mail");

// See Note 1
//mySearcher.SizeLimit = int.MaxValue;

// No point in requesting all of them at once, it'll page through
// all of them for you.
mySearcher.PageSize = 100;

// Wrap in a using so the object gets disposed properly.
// (See Note 2)
using (SearchResultCollection searchResults = mySearcher.FindAll())
{
foreach (SearchResult resEnt in searchResults)
{
// Make sure the mail attribute is provided and that there
// is actually data provided.
if (resEnt.Properties["mail"] != null
&& resEnt.Properties["mail"].Count > 0)
{
string email = resEnt.Properties["mail"][0] as string;
if (!String.IsNullOrEmpty(email))
{
// Do something with the email address
// for the public folder.
}
}
}
}
}

注1

DirectorySearcher.SizeLimit的备注表示如果大小限制高于服务器确定的默认值(1000 个条目),则忽略该大小限制。分页使您可以在需要时获取所需的所有条目。

注2

DirectorySearcher.FindAll()的备注提到需要处理 SearchResultCollection 以释放资源。将其包装在 using 语句中可以清楚地表明您作为程序员的意图。

额外

如果您使用的是 Exchange 2007 或 2010,您还可以安装 Exchange 管理工具并使用 powershell cmdlet 查询您的公用文件夹。您可以实用地创建 powershell 运行空间并直接调用 Exchange cmdlet,而实际上不需要用户与之交互的控制台。

关于c# - 用于交换的公共(public)文件夹的电子邮件地址列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1661647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com