我设置了一个共享邮箱,可以访问它及其子文件夹:
var folderId = new FolderId(WellKnownFolderName.MsgFolderRoot, "shared.mailbox@domain.local");
var folders = client.FindFolders(folderId, new FolderView(Int32.MaxValue));
要执行此操作,我需要知道共享邮箱的名称 - 在此示例中,共享邮箱的名称为 shared.mailbox@domain.local 。有没有办法枚举我能够访问的所有共享邮箱名称?我尝试过在线搜索但我找不到解决方案。
答案 0 :(得分:3)
例如,当您从Exchange连接到Office 365帐户并加入组时,您会看到该组的共享邮箱。然后,当您在线浏览到Office 365邮箱而不是Exchange时,您也可以在那里看到该组
如果您正在谈论的Office365群组可以通过git hub https://github.com/OfficeDev/ews-managed-api中最新版本的Managed API中的GetUserUnifiedGroups访问这些内容,例如
RequestedUnifiedGroupsSet Group = new RequestedUnifiedGroupsSet();
Group.FilterType = UnifiedGroupsFilterType.All;
Group.SortDirection = SortDirection.Ascending;
Group.SortType = UnifiedGroupsSortType.DisplayName;
List<RequestedUnifiedGroupsSet> reqG = new List<RequestedUnifiedGroupsSet>();
reqG.Add(Group);
Collection<UnifiedGroupsSet> ugGroupSet = service.GetUserUnifiedGroups(reqG,"jcool@domain.com");
foreach (UnifiedGroupsSet ugset in ugGroupSet)
{
foreach (UnifiedGroup ugGroup in ugset.Groups)
{
Console.WriteLine(ugGroup.SMTPAddress);
}
}
允许访问启用自动映射的位置的邮箱(这些是Outlook将自动映射到配置文件的邮箱)例如Add-MailboxPermission -AutoMapping可以使用自动发现来发现,例如
AutodiscoverService adAutoDiscoverService = new AutodiscoverService(ExchangeVersion.Exchange2013_SP1);
adAutoDiscoverService.Credentials = new NetworkCredential("user@domain.com", "pass");
adAutoDiscoverService.EnableScpLookup = false;
adAutoDiscoverService.RedirectionUrlValidationCallback = adAutoDiscoCallBack;
adAutoDiscoverService.PreAuthenticate = true;
adAutoDiscoverService.KeepAlive = false;
GetUserSettingsResponse gsp = adAutoDiscoverService.GetUserSettings("user@domain.com", UserSettingName.AlternateMailboxes);
Object Mailboxes = null;
if (gsp.Settings.TryGetValue(UserSettingName.AlternateMailboxes, out Mailboxes))
{
foreach (AlternateMailbox Mailbox in ((AlternateMailboxCollection)Mailboxes).Entries)
{
Console.WriteLine(Mailbox.SmtpAddress);
}
}
但是,刚刚添加了邮箱或文件夹权限的邮箱,无法知道其他邮箱,然后枚举每个邮箱DACL并检查它。
答案 1 :(得分:1)
在EMS中运行此命令以查找所有用户邮箱名称并导出到csv:
Get-Mailbox -ResultSize Unlimited |选择Name,Alias,RecipientTypeDetails | Export-Csv c:\ Users.csv
然后形成你的代码,从文件中读取并循环遍历它我建议将folderid存储在字典中,以便以后可以访问它们
并且无法直接从api中找到服务器中的邮箱