Aujourd’hui je vais expliquer brièvement les deux manières les plus communes afin d’interagir avec son serveur Exchange. Grâce à cela, nous pourrons ensuite effectuer des opérations du type réception et envoi d’email et bien plus encore…
Mais commençons par le début :
Partie I: Configuration et initialisation de la connexion avec le serveur Exchange
Introduction
Il y a plusieurs façons de se connecter et de communiquer avec le serveur Exchange, du plus simple (en utilisant la nouvelle API conçu récemment par Microsoft) jusqu’au plus compliqué (envoyer des requêtes XML/ SOAP). Dans cet article je parlerai uniquement de l’API managée et du Webservice EWS offert par le serveur Exchange
Utilisation de l’API EWS Managed 1.1
Etape 0 : Que fait cette API ?
Elle permet de rendre plus facile l’utilisation des services offerts par le serveur exchange en encapsulant les fonctionnalités dans des méthodes bien pensées.
Etape 1 : Téléchargement de l’API
La DLL dont nous avons besoin (Microsoft.Exchange.WebServices.dll) se place par défaut dans le dossier C:\Program Files\Microsoft\Exchange\Web Services\1.1\
Etape 2 : Création d’un projet C# et ajout de la référence
Ouvrir Visual Studio, créer un nouveau projet Windows Forms Application et ajouter cette DLL dans références.
Etape 3 : Code basique nécessaire à l’initialisation du service
Copier ce qui suit dans votre code :
using Microsoft.Exchange.WebServices.Data; //Permet d'utiliser les fonctionnalités de l'API |
using Microsoft.Exchange.WebServices.Data; //Permet d'utiliser les fonctionnalités de l'API
Et ce qui suit dans le corps d’une méthode :
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
m_service.Credentials = new WebCredentials(sUser, sPwd, sDomain);
m_service.Url = new Uri("https://SERVER/EWS/Exchange.asmx"); |
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
m_service.Credentials = new WebCredentials(sUser, sPwd, sDomain);
m_service.Url = new Uri("https://SERVER/EWS/Exchange.asmx");
Dans le cas d’une où le certificat de sécurité n’est pas signé, vous pourriez voir vos requêtes refusées, dans ce cas ajoutez ceci :
using System.Security.Cryptography.X509Certificates;
private static bool RemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors){ return true;} |
using System.Security.Cryptography.X509Certificates;
private static bool RemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors){ return true;}
Et ce qui suit dans votre code :
ServicePointManager.ServerCertificateValidationCallback = RemoteCertificateValidationCallback; |
ServicePointManager.ServerCertificateValidationCallback = RemoteCertificateValidationCallback;
Voilà, votre service est prêt à être utiliser. Voir chapitre suivant
Utilisation directe du Web Service EWS
L’utilisation du web service n’est pas conseillée par Microsoft, même si elle fournit quelques fonctionnalités poussées supplémentaires (pour le moment) par rapport à l’API(ExportItem par exemple, j’y reviendrais dans un prochain article)
Etape 1 : Création d’un projet C# et ajout de la web référence
Ouvrir Visual Studio, créer un nouveau projet Windows Form Application et ajouter dans une référence à un service. Taper ensuite l’adresse de votre service (https://SERVER/EWS/Exchange.asmx) et rechercher le service. Ajouter le en spécifiant un namespace approprié (ici, je le nomme ExchangeWebRef)
Etape 2 : Code basique nécessaire à l’initialisation du service
using TestExchangeBasicFeatures.ExchangeWebRef;
//Connection directement avec le webservice:
m_exchangeServerBinding = new ExchangeServiceBinding();
ICredentials creds = new NetworkCredential(sUser, sPwd, sDomain);
m_exchangeServerBinding.Credentials = creds;
m_exchangeServerBinding.Url = @"https://SERVER/EWS/Exchange.asmx";
m_exchangeServerBinding.RequestServerVersionValue = new RequestServerVersion();
m_exchangeServerBinding.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2010_SP1; |
using TestExchangeBasicFeatures.ExchangeWebRef;
//Connection directement avec le webservice:
m_exchangeServerBinding = new ExchangeServiceBinding();
ICredentials creds = new NetworkCredential(sUser, sPwd, sDomain);
m_exchangeServerBinding.Credentials = creds;
m_exchangeServerBinding.Url = @"https://SERVER/EWS/Exchange.asmx";
m_exchangeServerBinding.RequestServerVersionValue = new RequestServerVersion();
m_exchangeServerBinding.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2010_SP1;
Voilà, votre WebService est prêt à être utilisé. Voir chapitre suivant
FAQ
Question : Dans le cas de l’utilisation du Web Service, je ne parviens pas à trouver la classe ExchangeServiceBinding dans la référence de service que j’ai ajouté.
Réponse : Ajouter le web service en passant par avancé>ajouter une référence web