在用ExchangeService(EWS)连接Exchange邮件服务器时,报错:
The response received from the service didn't contain valid XML.
其InnerException为:
The expected XML node type was XmlDeclaration, but the actual type is Element.
其源代码如下:
//连接服务器
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = new NetworkCredential("***", "***", "***");
service.AutodiscoverUrl("***");
//获取邮件列表(收件箱中的邮件)
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox,new ItemView(10));
foreach (Item item in findResults.Items)
{
//获取具体的邮件对象
EmailMessage email = EmailMessage.Bind(service, item.Id);
//判断附件是否为文件
if (!(email.Attachments[0] is FileAttachment)) continue;
FileAttachment fileAttachment = email.Attachments[0] as FileAttachment;
fileAttachment.Load("C:\\temp\\" + fileAttachment.Name);
//标记为已读
email.IsRead = true;
//将对邮件的改动提交到服务器
email.Update(ConflictResolutionMode.AlwaysOverwrite);
}
查了一些资料,也没有找到具体的原因,自己尝试了好多方法,最终将代码更改如下:
//连接服务器
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = new NetworkCredential("用户名", "密码", "域");
service.AutodiscoverUrl("你的邮箱");
service.Url = new Uri("这里是你的邮箱Service地址(以asmx结尾)");
//获取邮件列表(收件箱中的邮件)
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox,new ItemView(10));
foreach (Item item in findResults.Items)
{
//获取具体的邮件对象
EmailMessage email = EmailMessage.Bind(service, item.Id);
//判断附件是否为文件
if (!(email.Attachments[0] is FileAttachment)) continue;
FileAttachment fileAttachment = email.Attachments[0] as FileAttachment;
fileAttachment.Load("C:\\temp\\" + fileAttachment.Name);
//标记为已读
email.IsRead = true;
//将对邮件的改动提交到服务器
email.Update(ConflictResolutionMode.AlwaysOverwrite);
}
这一次就能正常收取了,加入了URL问题就解决了,不知道这个是什么原因,我原来用第一段代码的时候,并没有加入Url也能够正常访问的,这个事情比较的奇怪。