c# – 通过Exchange Web服务(EWS)erreor SSL查询全局地址列表(GA
发布时间:2020-12-15 21:56:37 所属栏目:百科 来源:网络整理
导读:我的英语不好,但我会尽我所能. 我尝试通过EWS访问Exchange 2010,我想获取邮箱的联系人 阅读收件箱中的电子邮件非常有效 这是我的代码,并提前感谢您的回复 class Program{ static void Main(string[] args) { ServicePointManager.ServerCertificateValidatio
我的英语不好,但我会尽我所能.
我尝试通过EWS访问Exchange 2010,我想获取邮箱的联系人 阅读收件箱中的电子邮件非常有效 这是我的代码,并提前感谢您的回复 class Program { static void Main(string[] args) { ServicePointManager.ServerCertificateValidationCallback = delegate(Object obj,X509Certificate certificate,X509Chain chain,SslPolicyErrors errors) { // If the certificate is a valid,signed certificate,return true. if (errors == System.Net.Security.SslPolicyErrors.None) { return true; } // If there are errors in the certificate chain,look at each error to determine the cause. if ((errors & System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors) != 0) { if (chain != null && chain.ChainStatus != null) { foreach (System.Security.Cryptography.X509Certificates.X509ChainStatus status in chain.ChainStatus) { if ((certificate.Subject == certificate.Issuer) && (status.Status == System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.UntrustedRoot)) { // Self-signed certificates with an untrusted root are valid. continue; } else { if (status.Status != System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.NoError) { // If there are any other errors in the certificate chain,the certificate is invalid,// so the method returns false. return false; } } } } // When processing reaches this line,the only errors in the certificate chain are // untrusted root errors for self-signed certificates. These certificates are valid // for default Exchange Server installations,so return true. return true; } else { // In all other cases,return false. return false; } }; ExchangeService _service = new ExchangeService(ExchangeVersion.Exchange2010); _service.Credentials = new WebCredentials("user","password"); _service.Url = new Uri("https://mail.domain.be/ews/exchange.asmx"); //Mail dans mailbox FindItemsResults<Item> findResults = _service.FindItems( WellKnownFolderName.Inbox,new ItemView(10)); foreach (Item item in findResults.Items) Console.WriteLine(item.Subject); Console.ReadLine(); //CONtact mailbox foreach (Contact contact in _service.FindItems(WellKnownFolderName.Contacts,new ItemView(int.MaxValue))) { Console.WriteLine(contact); } } 解决方法
我的解决方案
static void Main(string[] args) { ServicePointManager.ServerCertificateValidationCallback = delegate(Object obj,SslPolicyErrors errors) { if (errors == System.Net.Security.SslPolicyErrors.None) { return true; } if ((errors & System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors) != 0) { if (chain != null && chain.ChainStatus != null) { foreach (System.Security.Cryptography.X509Certificates.X509ChainStatus status in chain.ChainStatus) { if ((certificate.Subject == certificate.Issuer) && (status.Status == System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.UntrustedRoot)) { continue; } else { if (status.Status != System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.NoError) { return false; } } } } return true; } else { return false; } }; ExchangeService _service = new ExchangeService(ExchangeVersion.Exchange2010); _service.Credentials = new WebCredentials("user","password"); _service.Url = new Uri("https://mail.domain.com/ews/exchange.asmx"); //Contact mailbox ContactsFolder contactsfolder = ContactsFolder.Bind(_service,WellKnownFolderName.Contacts); int numItems = contactsfolder.TotalCount < int.MaxValue ? contactsfolder.TotalCount : int.MaxValue; ItemView view = new ItemView(numItems); view.PropertySet = new PropertySet(BasePropertySet.IdOnly,ContactSchema.DisplayName); FindItemsResults<Item> contactItems = _service.FindItems(WellKnownFolderName.Contacts,view); foreach (Item item in contactItems) { if (item is Contact) { Contact contact = item as Contact; Console.WriteLine(contact.DisplayName); } } Console.ReadLine(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |