2015-09-02 10 views
13

I EWS API in meiner Konsolenanwendung bin mit Postfachelementen und meinem Verbindungsskript zu verarbeiten sieht aus wieAnbindung an Office 365 von EWS API

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

Aber ich fand, dass mein E-Mail-Konto zu Office 365 Cloud verschoben wurde. Wie sollte ich die Authentifizierung ändern?

gefunden i EWS Service url

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

aber ich weiß nicht, wie es zu benutzen.

Danke

+0

Sie müssen wahrscheinlich nur Ihre Anmeldeinformationen (Benutzername/Pw) in 'service.Credentials'. – kat0r

+4

Ich habe deine Frage gewählt, weil deine Frage die Antwort auf meine Frage war. In meinem Fall funktionierte autodiscover nicht remotly nur lokal, aber sobald ich service.Url = new Uri ("https://outlook.office365.com/EWS/Exchange.asmx"); explizit statt Autodiscover funktionierte es wie ein Charme Vielen Dank wieder – Chris

+0

AutoDiscover war sehr langsam, aber die Einstellung der URI arbeitete viel besser – wruckie

Antwort

9

können Sie den Code verwenden, unten an das EWS auf Office 365 verbinden:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1); 

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

Sie definieren für die AutodiscoveryUrl Funktion, wie diese Callback-Funktion benötigen:

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

Es funktioniert, danke! Aber wissen Sie auch, wie Sie die Windows-Authentifizierung verwenden? weil ich kein Passwort im Code speichern kann. Ich fand diesen Artikel http://www.jeremythake.com/2014/08/using-the-exchange-online-ews-api-with-office-365-api-via-azure-ad/ aber ich weiß nicht, was ist ServiceResourceId-Variable. – Muflix

+1

@Muflix, es ist OAuth, nicht Windows-Authentifizierung. Bitte lesen Sie diesen Artikel: https://msdn.microsoft.com/en-us/library/office/dn626019 (v = exchg.150) .aspx # sectionSection1 – Matt

+1

um die richtige Version des Exchange-Dienstes wie (changeService (ExchangeVersion.Exchange2013_SP1)) benötigen Sie die richtige Version von "Microsoft.Exchange.WebServices.dll". Dies verursacht eine Menge Kopfschmerzen für mich, ich hoffe, es hilft anderen. – Dung

Verwandte Themen