0

「リモート サーバーがエラーを返しました: (501) 実装されていません」というエラー メッセージが表示されます。GETメソッドを使用してHttpWebRequest.GetResponse()を使用して、交換から電子メールの添付ファイルを取得しようとすると。HttpVersion を変更しようとしましたが、受信トレイを検索できるため、アクセス許可の問題ではないと思います。

受信トレイで HttpWebRequest.Method = Search ( https://mail.mailserver.com/exchange/testemailaccount/Inbox/ ) を使用して HREF を取得するために使用されるため、資格情報が正しいことはわかっています。

HREF = https://mail.mailserver.com/exchange/testemailaccount/Inbox/testemail.EML/attachment.csv

サンプルコード:

HttpWebRequest req = (System.Net.HttpWebRequest)  HttpWebRequest.CreateHREF);                
req.Method = "GET";
req.Credentials = this.mCredentialCache;
string data = string.Empty;
using (WebResponse resp = req.GetResponse())
{
    Encoding enc = Encoding.Default;
    if (resp == null)
    {
        throw new Exception("Response contains no information.");
    }

    using (StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.ASCII))
    {
        data = sr.ReadToEnd();
    }
}
4

2 に答える 2

0

Exchange 2007 に対して WebDAV を使用しているようです。Exchange 2007 の既定では、WebDAV は有効になっていません。したがって、次のいずれかを実行できます。

1) Exchange 2007 サーバーで WebDAV を有効にします。

2) Exchange Web サービスの使用に切り替えます。

この種のタスクを WebDAV を使用するよりもはるかに簡単にするManaged EWS APIがあるため、C# を使用しているため、オプション 2 をお勧めします。また、WebDAV が完全に削除された Exchange 2010 を最終的にターゲットにすることもできます。

于 2010-05-11T22:54:27.663 に答える
0

考えられる解決策は 2 つあります。

  1. HTTP の代わりに POP3 プロトコルを使用してみてください。これを自分で実装してみるか (たとえば、「C# で POP3 を作成する方法」を参照)、SSL をサポートする既製の POP3 ライブラリ ( POP3Clientなど) を使用するか、この質問を参照してください。

  2. また、おそらくhttps接続を処理していないため、エラーが発生しました。このコードを追加してみてください:

    ServicePointManager.CertificatePolicy = 新しい AcceptAllCertificatePolicy();

クラスの実装は次のとおりです。

internal class AcceptAllCertificatePolicy : ICertificatePolicy
{
    public AcceptAllCertificatePolicy()
    {
    }
    public bool CheckValidationResult(ServicePoint sPoint, X509Certificate cert,
    WebRequest wRequest, int certProb)
    {
        //Allways accept
        return true;
    }
}
于 2010-04-15T21:20:28.717 に答える