c# - Exchange Web 服务 API 和 401 未授权异常

标签 c# exchangewebservices http-status-code-401 exchange-server-2007 unauthorized

当我尝试使用 EWS API 发送电子邮件时,出现以下错误:(in message.Send();)

The request failed. The remote server returned an error: (401) Unauthorized.

我的代码如下:

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("user@domain", "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("destination@domain");
    message.Save();
    message.Send();
}
catch (Exception ex)
{
    throw ex;
}

我阅读了本网站上有关此问题的其他帖子,但它们无法解决我的问题。

最佳答案

尝试改变这个:

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

进入这个:

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

有时,登录凭据取决于 Exchange/Active Directory 的配置方式。 可以是 user@domain 或 domain\user

关于c# - Exchange Web 服务 API 和 401 未授权异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517323/

相关文章:

c# - 优化获取 "get_Item"MethodInfo的方式

c# - 在 ABC 类中有一个集合<ABC> 可以吗?这是好的做法吗?

c# - 如何通过 C# 中的 Exchange Web 服务确定电子邮件的发件人?

使用正确凭据的 C# WebClient HTTP 基本身份验证失败 401

iis - 调用 Exchange Web 服务时出现 401 错误

c# - mongo C# 通过id删除多条记录

c# - 使用 EPPLUS 下载受密码保护的 Excel

soap - 使用 postman 测试 Microsoft EWS(Exchange Web 服务)

c# - 从 EWS 访问 Outlook 用户属性

Haskell curl 在状态 401 上缺少内容