簡體   English   中英

EWS獲取郵箱類型(用戶/資源/共享)

[英]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 GetRoomListsGetRooms函數

通過將上面的代碼段與GetRoomLists / GetRooms結合使用,您可以獲得一個房間的郵箱。 但請記住:有些房間可能沒有郵箱。

更新2

使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM