如何通过Windows登录名使用用户名和密码访问Outlook Exchange Server?

问题描述 投票:0回答:1

我正在使用VS19为我的公司在WinForms中创建一个“简单” VSTO(Outlook插件),它将扫描所有文件夹中的社会安全号码,并在listView中列出电子邮件项目,以便用户可以删除邮件。

我正在使用EWS托管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("[email protected]");


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

当我在上面的代码中对信息进行硬编码时,一切正常,可以访问收件箱文件夹并列出电子邮件列表

搜索了几个小时没有结果之后,希望您能为我提供帮助。

c# exchange-server exchangewebservices
1个回答
0
投票

如果您定位到本地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("[email protected]");

但是,如果您以Exchange Online或Office 365开发人员站点邮箱为目标,则必须传递明确的凭据。

© www.soinside.com 2019 - 2024. All rights reserved.