加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读