Подтвердить что ты не робот

API веб-сервиса Exchange и 401 несанкционированное исключение

Когда я пытаюсь отправить электронную почту с помощью EWS API, я получаю следующую ошибку: (в message.Send();)

Запрос не выполнен. Удаленный сервер возвратил ошибку: (401) Неавторизованный.

Мой код следующий:

ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

//WebService Uri
try
{
    exchangeService.Url = new Uri("https://exchangeserver/ews/exchange.asmx");
}
catch (Exception ex)
{
    throw new Exception(string.Format("WebService Uri:" + ex));
}

//Credentials
try
{
    exchangeService.Credentials = new WebCredentials("[email protected]", "pwd", "domain");
}
catch (Exception ex)
{
    throw new Exception(string.Format("Credentials:" +  ex));
}

//Send a mail
try
{
    EmailMessage message = new EmailMessage(exchangeService);
    message.Subject = "Test";
    message.Body = "Test";
    message.ToRecipients.Add("[email protected]");
    message.Save();
    message.Send();
}
catch (Exception ex)
{
    throw ex;
}

Я читал другие сообщения на этом сайте по этой проблеме, но они не смогли решить мою проблему.

4b9b3361

Ответ 1

Попробуйте изменить это:

 exchangeService.Credentials = new WebCredentials("[email protected]", "pwd", "domain");

в это:

 exchangeService.Credentials = new WebCredentials("user", "pwd", "domain");

Когда-то учетные данные входа зависят от того, как он настроен для Exchange/Active Directory. Это может быть user @domain или domain\user

Ответ 2

Мне потребовалось много времени, чтобы найти решение по той же проблеме. В моем случае мне нужно было добавить в EWS Virtual Directory на сайте IIS список разрешенных URL-адресов. Перейдите к управлению IIS, щелкните EWS node в разделе "Веб-сайт по умолчанию", затем дважды щелкните "Фильтрация запросов". Перейдите на вкладку URL и справа, выберите Разрешить URL. Введите URL-адрес, с помощью которого вы будете ссылаться на услугу, например. example.com/ews/или server.example.com/ews/

Кроме того, связанные с подобными проблемами, мне нужно было добавить все хосты (*) к доверенному хосту winrm (по умолчанию у него был только локальный IP-адрес).

НТН.