通过 Exchange Web Services (EWS) erreor SSL 查询全局地址列表 (GAL)
本文关键字:全局 查询 地址 列表 GAL SSL erreor Services Exchange EWS 通过 | 更新日期: 2023-09-27 18:33:00
我的英语不好,但我会尽力而为。我尝试通过 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, X509Certificate certificate, X509Chain chain, 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();
}