web-dev-qa-db-fra.com

Connexion à Office 365 par l'API EWS

J'utilise l'API EWS dans mon application console pour traiter les éléments de boîte aux lettres et mon script de connexion ressemble à ceci:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.UseDefaultCredentials = true;
service.AutodiscoverUrl("[email protected]");

Mais j’ai constaté que mon compte de messagerie avait été déplacé vers le cloud Office 365. Comment devrais-je changer l'authentification?

j'ai trouvé l'URL du service EWS

 service.Url = new Uri("https://Outlook.office365.com/EWS/Exchange.asmx");

mais je ne sais pas comment l'utiliser.

Je vous remercie

15
Muflix

Vous pouvez utiliser le code ci-dessous pour vous connecter au serveur Web intégré sur Office 365: 

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);

service.Credentials = new WebCredentials("[email protected]", "password");
service.AutodiscoverUrl("[email protected]", RedirectionUrlValidationCallback);

Vous devez définir une fonction de rappel pour la fonction AutodiscoveryUrl, comme suit:

private static bool RedirectionUrlValidationCallback(string redirectionUrl)
{
    // The default for the validation callback is to reject the URL.
    bool result = false;

    Uri redirectionUri = new Uri(redirectionUrl);

    // Validate the contents of the redirection URL. In this simple validation
    // callback, the redirection URL is considered valid if it is using HTTPS
    // to encrypt the authentication credentials. 
    if (redirectionUri.Scheme == "https")
    {
        result = true;
    }
    return result;
}
15
Matt

Je sais que cette solution est assez ancienne, mais elle m’a quand même été très utile. J'ai quelques outils qui fonctionnaient avec la version réseau "normale" d'Exchange, mais jusqu'à présent, mes tests avec Exchange Online ont échoué (des erreurs telles que "Le service de découverte automatique n'a pas pu être localisé", etc.).

Ici, il est essentiel d’utiliser WebCredentials au lieu de NetworkCredential et une adresse électronique au lieu d’un nom d’utilisateur.

1
GeeBee