2015-09-02 17 views
13

używam EWS API w mojej aplikacji konsoli do przetwarzania elementów skrzynki pocztowej i mojego skryptu połączenie wyglądaPodłączenie do usługi Office 365 przez EWS API

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

ale uważam, że moje konto e-mail został przeniesiony do Office 365 chmurze. Jak mogę zmienić uwierzytelnianie?

znalazłem EWS usług url

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

ale nie wiem, jak go używać.

Dziękuję

+0

Najprawdopodobniej wystarczy ustawić swoje poświadczenia (nazwa użytkownika/pw) w 'service.Credentials'. – kat0r

+4

Głosowałem za twoim pytaniem, ponieważ twoje pytanie było odpowiedzią na moje pytanie. W moim przypadku autodiscover nie działał zdalnie tylko w siedzibie, ale jak tylko wstawię service.Url = new Uri ("https://outlook.office365.com/EWS/Exchange.asmx"); jawnie zamiast autodiscover działało jak czar Dziękuję bardzo znowu – Chris

+0

AutoDiscover był bardzo powolny, ale ustawienie URI działało znacznie lepiej – wruckie

Odpowiedz

9

Można użyć kodu poniżej, aby połączyć się z EWS na biura 365:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1); 

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

Trzeba zdefiniować jedną funkcję wywołania zwrotnego dla funkcji AutodiscoveryUrl, tak:

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; 
} 
+0

Działa, dziękuję! Ale czy wiesz również, jak korzystać z uwierzytelniania systemu Windows? ponieważ nie mogę przechowywać hasła w kodzie. Znalazłem ten artykuł http://www.jeremythake.com/2014/08/using-the-exchange-online-ews-api-z-office-365-api-via-azure-ad/, ale nie wiem, co jest Zmienna ServiceResourceId. – Muflix

+1

@Muflix, jest to OAuth, a nie uwierzytelnianie systemu Windows. Przeczytaj ten artykuł: https: //msdn.microsoft.com/en-us/library/office/dn626019 (v = exchange.150) .aspx # sectionSection1 – Matt

+1

, aby móc wybrać odpowiednią wersję usługi Exchange, na przykład (changeService (ExchangeVersion.Exchange2013_SP1)) musisz mieć odpowiednią wersję "Microsoft.Exchange.WebServices.dll". To powoduje wiele bólu głowy, mam nadzieję, że pomaga innym. – Dung

Powiązane problemy