26

EWS API を使用してメールを送信しようとすると、次のエラーが表示されます: (in 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;
}

この問題に関するこのサイトの他の投稿を読みましたが、私の問題を解決できませんでした。

4

3 に答える 3

40

これを変更してみてください:

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

これに:

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

ログイン資格情報は、Exchange/Active Directory の構成方法によって異なる場合があります。user@domain または domain\user の可能性があります

于 2012-11-22T17:22:49.787 に答える
2

私の場合、許可された URL のリストを IIS サイトの下の EWS 仮想ディレクトリに追加する必要がありました。

  1. IIS 管理に移動し、[既定の Web サイト] の下にある [EWS] ノードをクリックしてから、[要求のフィルタリング] をダブルクリックします。

  2. [URL] タブに移動し、右側にある [URL を許可] をクリックします。

  3. サービスを呼び出す URL を入力します (example.com/ews/ または server.example.com/ews/ など)。

さらに、同様の問題に関連して、すべてのホスト (*) を winrm の信頼できるホストに追加する必要がありました (デフォルトでは、ローカル IP のみがリストされていました)。

于 2014-01-22T17:30:43.247 に答える