Подключение к Exchange без автообнаружения?

Мне нужно настроить собственное приложение на своем рабочем месте, чтобы читать строки темы электронной почты из определенного почтового ящика Exchange Server и перенаправлять их в зависимости от содержимого. Я написал следующий код для проверки подключения:

using System;
using Microsoft.Exchange.WebServices.Data;

namespace TestEmail
{
    class Program
    {
        static void Main(string[] args)
        {
            ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
            service.UseDefaultCredentials = true;
            //service.Credentials = new WebCredentials("user1@contoso.com", "password");

            service.TraceEnabled = true;
            service.TraceFlags = TraceFlags.All;

            service.AutodiscoverUrl("xxx@yyy.com", RedirectionUrlValidationCallback);

            EmailMessage email = new EmailMessage(service);

            email.ToRecipients.Add("xxx@yyy.com");

            email.Subject = "Test mail";
            email.Body = new MessageBody("Sending the test email");

            email.Send();
        }

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

Но настройки безопасности на рабочем месте запрещают выставлять конечные точки автообнаружения, и мне сообщили, что этот параметр нельзя изменить.

Есть ли другой способ подключения к серверу Exchange без использования AutoDiscover?

Это продолжение моего предыдущего вопроса Ошибка SSL/TLS при подключении к Exchange из C#

2 ответа

Если вы знаете свой URL-адрес EWS, вы можете просто жестко закодировать настройку и избавиться от кода автообнаружения, например:

Rem

//service.AutodiscoverUrl("xxx@yyy.com ", RedirectionUrlValidationCallback);

и использовать

service.Url = новый Uri (" https://computername.domain.contoso.com/EWS/Exchange.asmx");

см. также https://msdn.microsoft.com/en-us/library/office/dn509511(v=exchg.150).aspx

Имейте в виду, что Outlook 2016 даже не будет работать, если XML для автообнаружения недоступен. Вам действительно нужно включить автообнаружение, чтобы убедиться, что Outlook работает.
"параметры безопасности запрещают выставлять конечные точки автообнаружения" - мне любопытно, каковы возможные последствия для безопасности раскрытия конечных точек автообнаружения.

Другие вопросы по тегам