[英]Get ALL Mailboxes via EWS (Exchange WebServices) - not my own but also shared and group mailboxes
誰能向我提供一個 .NET (C# / VB) 示例,說明如何獲取我有權訪問的所有郵箱?
我只能通過 EWS 獲得我自己的郵箱 - 而不是我也可以通過 Outlook 訪問的所有其他郵箱。
我沒有這些郵箱的名稱和 ID,但是否可以像 Outlook 中那樣檢索允許我查看的所有郵箱(包括我自己的郵箱)?
我正在使用自動發現來獲取我的郵箱,如下所示: service.AutodiscoverUrl("xxxx@ee.dd")
- 這可能只會獲取我自己的郵箱,而不是所有 rest?
請幫忙??
您可以通過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;
}
我解決這個問題的方法是將有問題的組郵箱定義為“郵箱”對象,然后獲取特定文件夾的FolderID。
定義郵箱對象
Mailbox gpmailbox = new Mailbox("mailbox@yourdomainname.com");
獲取FolderID(在本例中為收件箱)
FolderId gpInbox = new FolderId(WellKnownFolderName.Inbox, gpmailbox);
在普通代碼中使用FolderID(在這種情況下,我正在獲取100條消息)
ItemView view = new ItemView(100); FindItemsResults<Item> results = hookToServer.FindItems(new FolderId(WellKnownFolderName.Inbox, gpmailbox), view);
關鍵是獲取所需文件夾的FolderID。 希望這可以幫助。
編輯:我也沒注意到我的對象“hookToServer”只是ExchangeService對象。 這是我如何定義它:
ExchangeService hookToServer = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
hookToServer.UseDefaultCredentials = true;
hookToServer.Url = new Uri("TheExchangeServer")
我還將此作為參考: EWS 2007組郵箱指南
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.