谁能向我提供一个.NET (C# / VB)示例,告诉我如何获取我有权访问的所有邮箱?
我只能通过EWS获得我自己的邮箱,而不是我也可以通过Outlook访问的所有其他邮箱。
我没有这些邮箱的名称或id,但是否可以像在Outlook中一样检索所有允许我查看的邮箱?
我正在使用自动发现来获得我的邮箱,像这样:service.AutodiscoverUrl("xxxx@ee.dd") -这可能只会得到我自己的邮箱,而不是所有其他的邮箱?
请帮帮我!?
发布于 2012-03-14 04:22:20
我解决这个问题的方法是将有问题的组邮箱定义为" mailbox“对象,然后获取特定文件夹的FolderID。
Mailbox("mailbox@yourdomainname.com");
gpmailbox);
ItemView ItemView=新邮箱(100);FindItemsResults results =hookToServer.FindItems(新FolderId(WellKnownFolderName.Inbox,gpmailbox),视图);
关键是抓取所需文件夹的FolderID。希望这能有所帮助。
编辑:我也没有注意到我的对象"hookToServer“仅仅是ExchangeService对象。下面是我对它的定义:
ExchangeService hookToServer = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
hookToServer.UseDefaultCredentials = true;
hookToServer.Url = new Uri("TheExchangeServer")我也使用了这个作为参考:EWS 2007 Group Mailbox Guide
发布于 2021-08-19 12:40:40
您可以通过Using Autodiscover to get user settings完成此操作,这是一个与使用AutodiscoverUrl方法的服务完全不同的服务。
你需要的设置名称是AlternateMailboxes,这将给出你有权访问的所有‘其他’邮箱的集合。然后,您可以添加用户的默认邮箱以获得完整的列表。
在c#中:
using Microsoft.Exchange.WebServices.Autodiscover; // from nuget package "Microsoft.Exchange.WebServices"
internal List<string> GetAccessibleMailboxes()
{
AutodiscoverService autodiscoverService = new AutodiscoverService("outlook.office365.com");
autodiscoverService.Credentials = networkCredential;
var userSmtpAddress = networkCredential.UserName;
GetUserSettingsResponse userresponse = autodiscoverService.GetUserSettings(
userSmtpAddress,
UserSettingName.AlternateMailboxes);
var alternateMailboxCollection = (AlternateMailboxCollection)userresponse.Settings[UserSettingName.AlternateMailboxes];
var smtpAddressList = alternateMailboxCollection.Entries.ToList().Select(a => a.SmtpAddress).ToList();
smtpAddressList.Add(userSmtpAddress);
return smtpAddressList;
}https://stackoverflow.com/questions/9276731
复制相似问题