[英]Exchange Web Service API and 401 unauthorized exception
当我尝试使用 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("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 的配置方式。
就我而言,我需要将允许的 URL 列表添加到 IIS 站点下的 EWS 虚拟目录。
进入 IIS 管理,点击 EWS 节点,在 Default Web Site 下,然后双击 Request Filtering。
转到 URL 选项卡,然后在右侧单击允许 URL。
输入您将用来调用服务的 URL,例如 example.com/ews/ 或 server.example.com/ews/
此外,与类似问题相关,我需要将所有主机 (*) 添加到 winrm 受信任主机(默认情况下,它仅列出本地 IP)。
此问题可能导致 Microsoft Office 365 提供的双向身份验证。最好创建应用程序密码并传递该密码,而不是 Outlook 密码。
exchangeService.Credentials = new WebCredentials("email", "app-pwd");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.