关于C#读取Exchange服务器邮件时报错:“此XML文档中禁用DTD”

怪兽在找我 2019-02-21 04:37:20
各位大佬好,
项目需求需要一个读取Exchange邮箱邮件的功能
网上查了一段代码分别为读取/发送 邮件,运行后发送邮件功能正常执行,但是读取邮件的时候报错
这个报错找了好久没有头绪
一个大写加粗的SOS
读取代码如下:

public void GetInbox(string userId, string pwd, string domain, int pageSize, int offset)
{
try
{
if (string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(pwd) || string.IsNullOrEmpty(domain))
{
throw new ArgumentNullException("当前用户信息为空,无法访问exchange服务器");
}
_exchangeService.Credentials = new NetworkCredential(userId, pwd, domain);
_exchangeService.Url = new Uri("http://mail.jj-inn.com");
//XmlReaderSettings settings = new XmlReaderSettings();//网上找的报错解决方案
//settings.ProhibitDtd = false;//网上找的报错解决方案
//settings.Schemas.Add(null, "http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd");//网上找的报错解决方案
ItemView view = new ItemView(pageSize, offset);
SearchFilter SF = SetFilter();
FindItemsResults<Item> findResults;
findResults = _exchangeService.FindItems(WellKnownFolderName.Inbox, SF, view);//此处报错:此XML文档中禁用DTD
//foreach (Item item in findResults.Items)
//{
Item item = findResults.Items[0];
item.Load(PropertySet.FirstClassProperties);
//转化为EmailMessage获取 获取邮件详情
var currentEmail = (Microsoft.Exchange.WebServices.Data.EmailMessage)(item);
List<string> ccRecipientsEmailLists = new List<string>();
List<string> bccRecipientsEmailLists = new List<string>();
foreach (var cc in currentEmail.CcRecipients)
{
ccRecipientsEmailLists.Add(cc.Address);
}
foreach (var bcc in currentEmail.BccRecipients)
{
bccRecipientsEmailLists.Add(bcc.Address);
}
string ExchangeItemId = item.Id.ChangeKey;
string body = item.Body.Text;
string Mail_cc = string.Join(";", ccRecipientsEmailLists.ToArray());
string Mail_bcc = string.Join(";", bccRecipientsEmailLists.ToArray());
string Mail_from = currentEmail.From.Address;
Boolean IsRead = item.IsNew;
string Subject = item.Subject;
DateTime CreateOn = item.DateTimeCreated;
//}
}
catch (Exception ex)
{
throw ex;
}

}

...全文
168 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2019-02-21
  • 打赏
  • 举报
回复
_exchangeService.Url = new Uri("http://mail.jj-inn.com");那么 这个服务器支持返回邮件么,它的用户名和密码是否正确
怪兽在找我 2019-02-21
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
catch (Exception ex)
{
throw ex;
}

在这里输出下错误描述
MessageBox.Show(ex.Description)
看下

出来这个:
threenewbee 2019-02-21
  • 打赏
  • 举报
回复
catch (Exception ex) { throw ex; } 在这里输出下错误描述 MessageBox.Show(ex.Description) 看下

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧