2015-09-02 33 views
13

sto utilizzando EWS API nella mia applicazione di console per elaborare elementi della cassetta postale e il mio script di connessione sembraCollegamento a Office 365 da EWS API

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

ma ho scoperto che il mio account di posta elettronica è stato spostato a Office 365 cloud. Come dovrei cambiare l'autenticazione?

Ho trovato il servizio EWS url

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

ma non so come usarlo.

Grazie

+0

Molto probabilmente devi solo impostare le tue credenziali (username/pw) in "service.Credentials". – kat0r

+4

Ho votato la tua domanda perché la tua domanda era la risposta alla mia domanda. Nel mio caso l'autodiscover non ha funzionato solo in locale, ma appena ho messo il servizio .Url = nuovo Uri ("https://outlook.office365.com/EWS/Exchange.asmx"); esplicitamente invece di autodiscover ha funzionato come un fascino Grazie mille ancora – Chris

+0

AutoDiscover era molto lento, ma l'impostazione dell'URI funzionava molto meglio – wruckie

risposta

9

per la connessione al server Web incorporato in ufficio, è possibile utilizzare il codice qui sotto 365:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1); 

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

È necessario definire una funzione di callback per la funzione AutodiscoveryUrl, in questo modo:

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

Funziona, grazie! Ma sai anche come usare l'autenticazione di Windows? perché non posso memorizzare la password nel codice. Ho trovato questo articolo http://www.jeremythake.com/2014/08/using-the-exchange-online-ews-api-with-office-365-api-via-azure-ad/ ma non so cosa sia Variabile ServiceResourceId. – Muflix

+1

@Muflix, è OAuth, non l'autenticazione di Windows. Fare riferimento a questo articolo: https: //msdn.microsoft.com/en-us/library/office/dn626019 (v = exchg.150) .aspx # sectionSection1 – Matt

+1

per poter selezionare la versione corretta del servizio di Exchange come (changeService (ExchangeVersion.Exchange2013_SP1)) è necessario disporre della versione corretta di "Microsoft.Exchange.WebServices.dll". Questo causa un sacco di mal di testa per me, spero che aiuti gli altri. – Dung