簡體   English   中英

通過 EWS (Exchange WebServices) 獲取所有郵箱 - 不是我自己的郵箱,還有共享郵箱和群組郵箱

[英]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。

  1. 定義郵箱對象

     Mailbox gpmailbox = new Mailbox("mailbox@yourdomainname.com"); 
  2. 獲取FolderID(在本例中為收件箱)

     FolderId gpInbox = new FolderId(WellKnownFolderName.Inbox, gpmailbox); 
  3. 在普通代碼中使用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.

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