Как получить доступ к Outlook Exchange Server с именем пользователя и паролем из Windows Login? - PullRequest
1 голос
/ 06 ноября 2019

Я создаю «простой» VSTO (плагин Outlook) в WinForms с использованием VS19 для моей компании, который будет сканировать все папки на предмет номеров социального страхования и перечислять элемент электронной почты в listView, чтобы пользователь мог удалить почту.

Я использую клиент EWS Managed API: https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/get-started-with-ews-managed-api-client-applications?redirectedfrom=MSDN

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

using Microsoft.Exchange.WebServices.Data;

// Setup how to download emails from the exchange server
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
service.Credentials = new WebCredentials("test.tester", "test123","domaintest");
service.AutodiscoverUrl("test.tester@test.com");


// Add all the mails from exchange server (inbox) to a list
bool more = true;
ItemView view = new ItemView(int.MaxValue, 0, OffsetBasePoint.Beginning);
view.PropertySet = PropertySet.IdOnly;
FindItemsResults<Item> findResults;
List<EmailMessage> emails = new List<EmailMessage>();
while (more)
{
     findResults = service.FindItems(WellKnownFolderName.Inbox, view);
     foreach (var item in findResults.Items)
        {
        emails.Add((EmailMessage)item);
        }
        more = findResults.MoreAvailable;
        if (more)
        {
            view.Offset += 1000;
        }
}

Когда я жестко кодирую свою информацию в вышеприведенном коде, все работает нормально, и я могу получить доступ к папке входящих сообщений и составить список с сообщениями электронной почты

После поиска в течение нескольких часов без результатов янадеюсь, ты сможешь мне помочь.

1 Ответ

0 голосов
/ 06 ноября 2019

Если вы ориентируетесь на локальный сервер Exchange и ваши учетные данные пользователя присоединены к домену:

service.UseDefaultCredentials = true;

Клиенты, присоединенные к домену и предназначенные для локального сервера Exchange, могут использовать учетные данные пользователя по умолчаниюкто вошел в систему, предполагая, что учетные данные связаны с почтовым ящиком. Добавьте следующий код после создания экземпляра объекта ExchangeService.

// Setup how to download emails from the exchange server
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
service.UseDefaultCredentials = true;
service.AutodiscoverUrl("test.tester@test.com");

Но если вы нацелены на почтовый ящик сайта разработчиков Exchange Online или Office 365, вам необходимо передать явные учетные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...