Sharepoint應用EWSManagedAPI操作Exchange郵箱


在sharepoint定制開發中,可能會有讀取用戶郵件並顯示的Webpart需求,

本文是對如何使用EWS Managed API操作Exchange郵箱進行的整理和總結。

一、認識EWS Managed API

EWS Managed API是微軟開發用於客戶端開發Exchange的應用程序接口,與.Net Framework

類庫一樣,簡單直觀的提供Exchange資源的統一訪問。

二、如何在sharepoint項目中使用EWS Managed API

如何將此類庫加入我們的sharepoint項目,可以看我之前的一篇博客  Sharepoint添加EWSManagedAPI引用

在此就不再講述。

三、sharepoint項目中的具體應用

下面的內容是我根據最近我遇到的項目來講述具體的應用。

3.1 首先實例化一個ExchangeService對象,並獲取收件箱中的內容。

            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
            ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);//如果是Exchange 2010,則切換到2010
            ICredentials creds = new NetworkCredential(username, password, "域名");
            service.Credentials = new WebCredentials(creds);
            service.Url = new Uri("https://服務器地址/ews/exchange.asmx");
            service.PreAuthenticate = true;
//完成實例化
ItemView view = new ItemView(10); view.OrderBy.Add(ItemSchema.DateTimeReceived, Microsoft.Exchange.WebServices.Data.SortDirection.Descending); Microsoft.Exchange.WebServices.Data.EmailMessage em = null; FindItemsResults<Item> findMailResults = service.FindItems(WellKnownFolderName.Inbox, view);foreach (Item m in findMailResults) { em = (Microsoft.Exchange.WebServices.Data.EmailMessage)m;
//對em郵件的操作 }
ServicePointManager.ServerCertificateValidationCallback這一句用於設置用於驗證服務器證書的回調,然后實例化一個ExchangeService對象,創建一個web驗證憑據creds,
並將此憑據賦給service.Credentials。Url這個屬性可以直接用Exchange服務器中的服務地址,也可以用ExchangeService中的AutodiscoverUrl方法,只需提供一個Exchange服務器地址
即可,ExchangeService會自動根據服務器地址找到對應的服務。
ItemView用於設置郵件視圖,包括大小和排序規則。從Inbox中取出郵件后,用循環取得郵件並進行相應的操作。

3.2 讀取任務文件夾中的內容

實例化與上面的相同,不同在於訪問的文件夾不同

            FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Tasks, view); //讀取任務文件夾
            Microsoft.Exchange.WebServices.Data.Task t = null;foreach (Item item in findResults.Items)
            {
                t = (Microsoft.Exchange.WebServices.Data.Task)(item);
                if (!t.IsComplete)
                {
//具體操作代碼
} }

上述內容是立即應用的代碼,根據需要取得的數據不同,訪問的文件也不用。

在使用Microsoft.Exchange.WebServices.Data過程中,發現此枚舉包含很多類型,根據不同的需求,只要訪問不同的類型就可以完成數據查詢。

3.3 獲取OwaID

有時我們需要在用戶點擊相應鏈接后跳轉到Owa郵件頁面,在拼接URL是會遇到無法獲取owaid(url中的id字符串),下面附上相應代碼

  public String GetOutlookOwaId(EmailMessage message, ExchangeService ser)
        {
            AlternateId ewsId = new AlternateId(IdFormat.EwsId, message.Id.ToString(), "用戶郵件地址如:**@exchange.com");
            AlternateIdBase owaId = ser.ConvertId(ewsId, IdFormat.OwaId);
            return ((AlternateId)owaId).UniqueId;
        } 

 

讀取郵箱中數據的操作基本就是這些了,下一篇博客會寫一下基於SharePoint  Secure Store Service服務實現用戶owa郵箱的模擬單點登錄。請有這方面需求的觀眾關注。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM