Подключение к Office 365 через EWS API

Я использую EWS API в своем консольном приложении для обработки элементов почтового ящика, а мое соединение script выглядит как

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

Но я обнаружил, что моя учетная запись электронной почты была перенесена в облако Office 365. Как изменить аутентификацию?

Я нашел URL службы EWS

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

но я не знаю, как его использовать.

Спасибо

Ответ 1

Вы можете использовать приведенный ниже код для подключения к EWS в офисе 365:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);

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

Вам нужно определить одну функцию обратного вызова для функции AutodiscoveryUrl, например:

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

Ответ 2

Я знаю, что это довольно старое решение, но оно все еще было очень полезным для меня. У меня есть несколько инструментов, которые работали с "нормальной" сетевой версией Exchange, но до сих пор мои тесты с Exchange Online не удавались (я получал сообщения типа "Не удалось найти службу автообнаружения" и т.д.).

Здесь необходимо использовать WebCredentials вместо NetworkCredential и адрес электронной почты вместо имени пользователя.

Ответ 3

Это не работает для нас. Мы продолжаем получать 401 Несанкционированный. Я пробовал как прямой URL, так и автообнаружение, но безуспешно.

Автообнаружение дает мне Не удалось найти службу автообнаружения. Прямой URL дает мне 401 Несанкционированный.

Кончаются идеи...

Ответ 4

Привет, я знаю, что это старый, но я перебираю ту же проблему с миграцией Exchange на Office 365. Только что заметил, что Microsoft не будет поддерживать Basic Authentication на EWS Online 13 октября 2020 г. Все еще пытаюсь найти альтернативный способ, но хотел опубликовать это, что это может сломать долгосрочную https://techcommunity.microsoft.com/t5/Exchange-Team-Blog/Upcoming-changes-to-Exchange-Web-Services-EWS-API-for-Office-365/ba-p/608055