Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Exchange获取电子邮件附件时遇到问题_C#_.net_Exchange Server_Exchange Server 2007 - Fatal编程技术网

C# 从Exchange获取电子邮件附件时遇到问题

C# 从Exchange获取电子邮件附件时遇到问题,c#,.net,exchange-server,exchange-server-2007,C#,.net,Exchange Server,Exchange Server 2007,当我尝试使用HttpWebRequest.GetResponse()使用GET方法从exchange获取电子邮件附件时,收到错误消息“远程服务器返回错误:(501)未实现”。我试图更改HttpVersion,但我认为这不是权限问题,因为我可以搜索收件箱 我知道我的凭据是正确的,因为它们用于使用HttpWebRequest.Method=Search在收件箱()上获取HREF HREF= 示例代码: HttpWebRequest req = (System.Net.HttpWebRequest)

当我尝试使用HttpWebRequest.GetResponse()使用GET方法从exchange获取电子邮件附件时,收到错误消息“远程服务器返回错误:(501)未实现”。我试图更改HttpVersion,但我认为这不是权限问题,因为我可以搜索收件箱

我知道我的凭据是正确的,因为它们用于使用HttpWebRequest.Method=Search在收件箱()上获取HREF

HREF=

示例代码:

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();
    }
}

有两种可能的解决方案:

  • 尝试使用POP3协议而不是HTTP。您可以尝试自己实现它(例如,请参见),也可以使用带有SSL支持的现成POP3库(例如),或者查看

  • 另外,您的错误可能是因为未处理https连接。尝试添加以下代码:

    ServicePointManager.CertificatePolicy=新接受CertificatePolicy()

  • 下面是类实现:

    internal class AcceptAllCertificatePolicy : ICertificatePolicy
    {
        public AcceptAllCertificatePolicy()
        {
        }
        public bool CheckValidationResult(ServicePoint sPoint, X509Certificate cert,
        WebRequest wRequest, int certProb)
        {
            //Allways accept
            return true;
        }
    }
    

    您似乎正在对Exchange 2007使用WebDAV。在Exchange2007中,默认情况下未启用WebDAV。因此,您可以:

    1) 在Exchange 2007服务器上启用WebDAV

    2) 切换到使用Exchange Web服务

    我推荐选项2,因为您使用的是C#,因为有一种方法使这类任务比使用WebDAV简单得多。它还允许您最终将WebDAV完全删除的Exchange 2010作为目标