我收到错误消息“远程服务器返回错误:(501)未实现。”当我尝试使用GET方法从交换获取电子邮件附件时使用HttpWebRequest.GetResponse()。我试图更改HttpVersion并且不认为这是一个权限问题,因为我可以搜索收件箱。
我知道我的凭据是正确的,因为它们用于使用收件箱中的HttpWebRequest.Method = Search来获取HREF(https://mail.mailserver.com/exchange/testemailaccount/Inbox/)。
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();
}
}
答案 0 :(得分:0)
有两种可能的解决方案:
尝试使用POP3协议而不是HTTP。您可以尝试自己实现此功能(例如,请参阅"How to POP3 in C#"),也可以使用现成的支持SSL的POP3库(例如POP3Client)或查看this question
您的错误也可能是因为没有处理https连接。尝试添加此代码:
ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();
这是类实现:
internal class AcceptAllCertificatePolicy : ICertificatePolicy
{
public AcceptAllCertificatePolicy()
{
}
public bool CheckValidationResult(ServicePoint sPoint, X509Certificate cert,
WebRequest wRequest, int certProb)
{
//Allways accept
return true;
}
}
答案 1 :(得分:0)
您似乎正在对Exchange 2007使用WebDAV。默认情况下,在Exchange 2007中,未启用WebDAV。所以你可以:
1)在Exchange 2007 Server上启用WebDAV。
2)切换到使用Exchange Web服务。
我建议使用选项2,因为你使用的是C#,因为Managed EWS API使得这种任务比使用WebDAV简单得多。它还允许您最终定位已完全删除WebDAV的Exchange 2010。