[英]EWS Get mailbox type (user/resource/shared)
僅給出一個電子郵件地址,我連接到郵箱,該郵箱接收發送到該地址的電子郵件:
ews.autodiscoverUrl(email);
var m = new Mailbox(email);
var folderId = new FolderId(WellKnownFolderName.Inbox, m);
var folder = Folder.Bind(ews,folderId);
有沒有辦法找出我打開的郵箱類型-是用戶郵箱,資源郵箱還是共享郵箱?
您可以通過調用ResolveName
找到給定電子郵件地址的郵箱類型:
var mailboxes = ews.ResolveName(email);
if (mailboxes.Any()) {
var mailbox = mailboxes.First();
if (mailbox.MailboxType == MailboxType.PublicFolder) {
// your magic
}
}
有關MailboxType的可能值,請參見此MSDN頁面 。
普通郵箱和會議室郵箱沒有區別。 如果您想知道Exchange服務器中存在哪些房間,可以使用EWS GetRoomLists
和GetRooms
函數 。
通過將上面的代碼段與GetRoomLists
/ GetRooms
結合使用,您可以獲得一個房間的郵箱。 但請記住:有些房間可能沒有郵箱。
使用GetRoomLists
/ GetRooms
的方法是唯一一種允許您使用EWS識別房間郵箱的方法。 但這確實要求您將房間添加到房間列表中,這可能需要賄賂一兩個管理員。
另一種方法是在Active Directory中查找相關信息,這顯然是Outlook所做的。 有關更詳細的說明 ,請參見此MSDN線程 ,但這是要點:
Outlook具有自己的目錄界面,它不使用EWS來獲取此信息。 如果您僅要使用EWS,則需要讓管理員創建房間列表供您使用。
最后一種選擇是使用PowerShell獲取郵箱類型。 這就是我剛用來在Exchange Online服務器中獲取會議室的內容:
PS H:\> Get-Mailbox | Where {$_.ResourceType -eq "Room"}
輸出:
Name Alias ServerName ProhibitSendQuota
---- ----- ---------- -----------------
Frank's room franksroom db3pr03mb058 49.5 GB (53,150,220,288 bytes)
另一個產生相同輸出的示例:
PS H:\> Get-Mailbox -Filter '(RecipientTypeDetails -eq "RoomMailBox")'
通過此輸出,我可以使用以下任一方式獲取郵箱:
exchange.ResolveName("Frank's room");
exchange.ResolveName("franksroom@myorganization.onmicrosoft.com");
一些相關的鏈接:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.