/// <summary> /// Create a service binding based off of default credentials, /// the assumed root folder, and an assumed autodiscover email address /// </summary> /// <param name="version">EWS schema version to use. Passing NULL uses the /// EWS Managed API default value.</param> /// <param name="ewsUrl">URL to EWS endpoint. Passing NULL or an empty string /// results in a call to Autodiscover</param> /// <param name="autodiscoverAddress">Email address to use for Autodiscover. /// Passing NULL or an empty string results in a ActiveDirectory querying.</param> /// <returns>A new instance of an ExchangeService</returns> private static void InitializeWithDefaults(ExchangeVersion?version, Uri ewsUrl, string autodiscoverAddress) { RequestedExchangeVersion = version; UseDefaultCredentials = true; // If the EWS URL is not specified, use Autodiscover to find it if (ewsUrl == null) { // If no email address was given to use with Autodiscover, attempt // to look it up in Active Directory if (String.IsNullOrEmpty(autodiscoverAddress)) { autodiscoverAddress = ActiveDirectoryHelper.GetPrimarySmtp( System.Security.Principal.WindowsIdentity.GetCurrent().Name); } DoAutodiscover(autodiscoverAddress); } else { EwsUrl = ewsUrl; } try { //EWSEditor.Common.EwsEditorAppSettings oSettings = new EWSEditor.Common.EwsEditorAppSettings(); CreateExchangeService().TestExchangeService(); } catch (ServiceVersionException ex) { DebugLog.WriteVerbose("Initial requested version of Exchange2010 didn't work, trying Exchange 2007_SP1", ex); // Pass the autodiscover email address and URL if we've already looked those up InitializeWithDefaults(ExchangeVersion.Exchange2007_SP1, EwsUrl, autodiscoverAddress); } }