国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

一種讀取Exchange的用戶未讀郵件數方法!

2019-11-15 02:29:59
字體:
來源:轉載
供稿:網友

一種讀取Exchange的用戶未讀郵件數方法!

已好幾個月沒寫博客了,由于之前忙于開發(fā)基于Sharepoint上的移動OA(AgilePoint)和采用混合移動開發(fā)技術開發(fā)一個安卓版的企業(yè)通訊錄APP(數據與lync一致),并于1月初正式上線。馬年初二的時候,有個天津的網友加我QQ,說我之前發(fā)表博客SharePoint 2013中修改windows 活動目錄(AD)域用戶密碼的WebPart(免費下載),的確對他有幫助,要捐助78元給我,希望我多發(fā)表相關的經驗總結分享,本人深受鼓舞,并把修改AD域用戶密碼發(fā)他參考學習研究,并在初五合作了另外的Sharepoint 2013開發(fā)需求,并通過淘寶支付了定金,能夠幫助他人解決問題,得到他人的認可還是蠻開心的。

今天分享一下在1月初完成的KMS與OA的門戶整合中其中用到的一種讀取Exchange的用戶未讀郵件數方法,由于KMS是基于java開發(fā)的,并且通過Cas已實現了SSO,需要通過接口把當前登錄用戶的未讀取郵件數顯示在KMS中,點擊直接進入到OWA頁面,如下圖:

本文主要通過采用EWS API方式自定義開發(fā)一個Web服務,并授權一個賬戶有模擬其他用戶的權限,具體如下:

1.安裝Microsoft Exchange Web Services Managed API 2.0,下載地址如下:

http://www.microsoft.com/en-us/download/details.aspx?id=35371

2.0版本支持Exchange Server 2007 Service Pack 1以上,即包括Exchange Server 2010 Service和 Exchange Server 2013 Service。

2.在Exchange服務器中授權一個賬戶有模擬其他用戶的權限,具體如下:

以Exchange 2010 Server為例,比如授權spadmin賬號模擬其他用戶的權限,打開Exchange 2010服務器在命令行中輸入:

New-ManagementRoleAssignment -Name:impersonationAssignmentName -Role:applicationImpersonation -User:spadmin

3.利用EWS API開發(fā)一個自定義的讀取Exchange的用戶未讀郵件數Web服務,已供其他系統(tǒng)(如KMS)調用,完整的C#代碼如下:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Services;using System.Web.Services.PRotocols;using System.Web.Services.Description;using System.Net;using System.Net.Security;using System.Security.Cryptography.X509Certificates;using ExchangeWebService.ews;namespace ExchangeWebService{    /// <summary>    /// Exchange Web Service by 軟件人生 2013.12.31    /// </summary>    [WebService(Namespace = "http://m.survivalescaperooms.com/nbpowerboy/exchange/")]    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]    [System.ComponentModel.ToolboxItem(false)]    // 若要允許使用 asp.net Ajax 從腳本中調用此 Web 服務,請取消對下行的注釋。    [System.Web.Script.Services.ScriptService]    public class ExchangeWebService : System.Web.Services.WebService    {        /// <summary>        /// 返回默認登錄域用戶的未讀郵件數        /// </summary>        /// <returns>返回默認登錄域用戶的未讀郵件數</returns>        [SoapRpcMethod(Action = "http://m.survivalescaperooms.com/nbpowerboy/exchange/GetUserUnReadMailCount", RequestNamespace = "http://m.survivalescaperooms.com/nbpowerboy/exchange/", ResponseNamespace = "http://m.survivalescaperooms.com/nbpowerboy/exchange/", Use = SoapBindingUse.Literal)]        [WebMethod]        public int GetUserUnReadMailCount(string username, string passWord, string domain)        {                        int merCurrentCount = 0;            try            {                ServicePointManager.ServerCertificateValidationCallback = delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; };                ExchangeServiceBinding service = new ExchangeServiceBinding();                service.RequestServerVersionValue = new RequestServerVersion();                service.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2010_SP2;                service.EnableDecompression = true;                System.Net.NetworkCredential nc = new NetworkCredential(username,password,domain);                //ICredentials creds = System.Net.CredentialCache.DefaultNetworkCredentials;                service.Credentials = nc;                              service.Url = @"https://mailserver/EWS/exchange.asmx";                merCurrentCount = GetUnreadFolderItemsCount(service, "收件箱");            }            catch            {            }            return merCurrentCount;        }        /// <summary>        /// 根據用戶郵件地址返回用戶的未讀郵件數        /// </summary>        /// <returns>根據用戶郵件地址返回用戶的未讀郵件數</returns>        [SoapRpcMethod(Action = "http://m.survivalescaperooms.com/nbpowerboy/exchange/GetUnReadMailCountByUserMailAddress", RequestNamespace = "http://m.survivalescaperooms.com/nbpowerboy/exchange/", ResponseNamespace = "http://m.survivalescaperooms.com/nbpowerboy/exchange/", Use = SoapBindingUse.Literal)]        [WebMethod]        public int GetUnReadMailCountByUserMailAddress(string UserMailAddress)        {            int unRead = 0;            try            {                Microsoft.Exchange.WebServices.Data.ExchangeService service = new Microsoft.Exchange.WebServices.Data.ExchangeService(Microsoft.Exchange.WebServices.Data.ExchangeVersion.Exchange2010_SP2);                service.Credentials = new NetworkCredential("spadmin", "Password", "contoso");                service.Url = new Uri(@"https://mailserver/EWS/exchange.asmx");                service.ImpersonatedUserId = new Microsoft.Exchange.WebServices.Data.ImpersonatedUserId(Microsoft.Exchange.WebServices.Data.ConnectingIdType.SmtpAddress, UserMailAddress);                unRead = Microsoft.Exchange.WebServices.Data.Folder.Bind(service, Microsoft.Exchange.WebServices.Data.WellKnownFolderName.Inbox).UnreadCount;            }            catch            {            }            return unRead;        }        /// <summary>        /// 根據用戶名返回用戶的未讀郵件數        /// </summary>        /// <returns>根據用戶郵件地址返回用戶的未讀郵件數</returns>        [SoapRpcMethod(Action = "http://m.survivalescaperooms.com/nbpowerboy/exchange/GetUnReadMailCountByUserPrincipalName", RequestNamespace = "http://m.survivalescaperooms.com/nbpowerboy/exchange/", ResponseNamespace = "http://m.survivalescaperooms.com/nbpowerboy/exchange/", Use = SoapBindingUse.Literal)]        [WebMethod]        public int GetUnReadMailCountByUserPrincipalName(string UserPrincipalName)        {            int unRead = 0;            try            {                Microsoft.Exchange.WebServices.Data.ExchangeService service = new Microsoft.Exchange.WebServices.Data.ExchangeService(Microsoft.Exchange.WebServices.Data.ExchangeVersion.Exchange2010_SP2);                service.Credentials = new NetworkCredential("spadmin", "Password", "contoso");                service.Url = new Uri(@"https://mailserver/EWS/exchange.asmx");                service.ImpersonatedUserId = new Microsoft.Exchange.WebServices.Data.ImpersonatedUserId(Microsoft.Exchange.WebServices.Data.ConnectingIdType.PrincipalName, UserPrincipalName);                unRead = Microsoft.Exchange.WebServices.Data.Folder.Bind(service, Microsoft.Exchange.WebServices.Data.WellKnownFolderName.Inbox).UnreadCount;            }            catch            {            }            return unRead;        }        private static int GetUnreadFolderItemsCount(ExchangeServiceBinding service, string folderName)        {            try            {                int unReadCount = -1;                // Identify the folder properties to return.                 FolderResponseShapeType properties = new FolderResponseShapeType();                PathToUnindexedFieldType ptuft = new PathToUnindexedFieldType();                ptuft.FieldURI = UnindexedFieldURIType.folderManagedFolderInformation;                PathToUnindexedFieldType[] ptufts = new PathToUnindexedFieldType[1] { ptuft };                properties.AdditionalProperties = ptufts;                properties.BaseShape = DefaultShapeNamesType.AllProperties;                // Form the get folder request.                 BaseFolderIdType p_folder = FindFolderID(service, folderName);                GetFolderType request = new GetFolderType();                request.FolderIds = new BaseFolderIdType[1] { p_folder };                request.FolderShape = properties;                // Send the request and get the response.                 GetFolderResponseType response = service.GetFolder(request);                ArrayOfResponseMessagesType aormt = response.ResponseMessages;                ResponseMessageType[] rmta = aormt.Items;                foreach (ResponseMessageType rmt in rmta)                {                    if (rmt.ResponseClass == ResponseClassType.Error)                    {                        throw new Exception(rmt.MessageText);                    }                    else                    {                        FolderInfoResponseMessageType firmt;                        firmt = (rmt as FolderInfoResponseMessageType);                        BaseFolde
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 含山县| 屏东县| 淮南市| 孟津县| 周口市| 吉林省| 湖口县| 定日县| 临夏市| 旅游| 青田县| 桑日县| 高州市| 竹山县| 四平市| 常山县| 盐津县| 河间市| 谢通门县| 富顺县| 城步| 丰台区| 驻马店市| 汤阴县| 达拉特旗| 临安市| 庆城县| 泰和县| 格尔木市| 青浦区| 云阳县| 余江县| 盐山县| 新巴尔虎左旗| 辛集市| 双江| 冕宁县| 宝清县| 甘孜县| 绥中县| 都匀市|