Beispiel #1
0
        private void AutoDiscover(AutodiscoverParams autodiscoverParams)
        {
            ExchangeService service = new ExchangeService(autodiscoverParams.ExchangeVersion, TimeZoneInfo.Utc)
            {
                Credentials = GetWebCredentials(autodiscoverParams),
                UserAgent   = "ews-test"
            };

            // Aids with Exchange diagnostics
            if (autodiscoverParams.ExchangeVersion >= ExchangeVersion.Exchange2013)
            {
                service.SendClientLatencies = true;
            }

            try
            {
                // Auto-discover works for both on-prem an cloud Office 365 accounts
                LogMessage($"Attempting to auto-discover Exchange Server for account '{autodiscoverParams.Email}'...");

                LogMessage($"Requesting Exchange version: {autodiscoverParams.ExchangeVersion.ToString()}");

                service.EnableScpLookup = autodiscoverParams.AllowSCP;

                service.TraceFlags   = TraceFlags.All;
                service.TraceEnabled = true;
                service.TraceEnablePrettyPrinting = true;
                service.TraceListener             = this;

                // Attempt autodiscovery
                service.AutodiscoverUrl(autodiscoverParams.Email, RedirectionUrlValidationCallback);

                service.TraceEnabled = false;
            }
            catch (AutodiscoverLocalException ex)
            {
                LogMessage($"AutodiscoverLocalException: {ex.Message}");
            }
            catch (AutodiscoverRemoteException ex)
            {
                LogMessage($"AutodiscoverRemoteException: {ex.Message}");
            }
            catch (ServiceLocalException ex)
            {
                LogMessage($"ServiceLocalException: {ex.Message}");
            }

            if (service.Url == null)
            {
                LogMessage($"{Environment.NewLine}Unable to auto-discover URL");
            }
            else
            {
                LogMessage($"{Environment.NewLine}Discovered Exchange URL: {service.Url}");
            }
        }
Beispiel #2
0
        private WebCredentials GetWebCredentials(AutodiscoverParams autodiscoverParams)
        {
            if (string.IsNullOrEmpty(autodiscoverParams.Username) == false)
            {
                string[] parts = autodiscoverParams.Username.Split('\\');
                if (parts.Length == 2 && !string.IsNullOrEmpty(parts[0]) && !string.IsNullOrEmpty(parts[1]))
                {
                    return(new WebCredentials(parts[1], autodiscoverParams.Password, parts[0]));
                }

                return(new WebCredentials(autodiscoverParams.Username, autodiscoverParams.Password));
            }

            return(new WebCredentials(autodiscoverParams.Email, autodiscoverParams.Password));
        }
Beispiel #3
0
        private async void ButtonAutoDiscover_Click(object sender, EventArgs e)
        {
            textBoxLog.Clear();
            _allowHttpUrls = checkBoxAllowHttp.Checked;

            _running = true;
            EnableButtons();

            var autodiscoverParams =
                new AutodiscoverParams
            {
                Email           = textBoxEmail.Text?.Trim(),
                Username        = textBoxUsername.Text?.Trim(),
                Password        = textBoxPassword.Text?.Trim(),
                ExchangeVersion = (ExchangeVersion)comboBoxExchangeVersion.SelectedItem,
                AllowSCP        = checkBoxAllowSCP.Checked
            };

            await System.Threading.Tasks.Task.Run(() => AutoDiscover(autodiscoverParams));

            _running = false;
            EnableButtons();
        }