发现问题:部分响应(消息正文)包含“” 这是一个无效的 XML 字符。知道如何删除它吗?
我正在使用 Exchange Web 服务从收件箱中提取大量电子邮件。它适用于前 1141 封电子邮件,但在 1142 上失败了(跳到 1143 可以正常工作)。我不知道为什么它无法检索电子邮件,但我得到的错误是:
Uncaught SoapFault exception: [Client] looks like we got no XML document
我将响应 XML 输出到 1142 和 1143 的文件,唯一的区别是 ItemId 行(如预期的那样)。
该电子邮件确实存在于收件箱中,尽管它包含一些奇怪的字符(由那些奇怪的方形符号表示)。
我正在使用稍微修改过的 php-ews 库版本。这是我的代码的一部分:
<?php
$response = $ews->FindItem($Request);
$items = $response->ResponseMessages->FindItemResponseMessage->RootFolder->Items->Message;
foreach ( $items as $item ) {
$ItemRequest = new EWSType_FindItemType();
$ItemRequest->ItemShape = new EWSType_ItemResponseShapeType();
$ItemRequest->ItemShape->BaseShape = EWSType_DefaultShapeNamesType::ALL_PROPERTIES;
$ItemRequest->ItemShape->BodyType = EWSType_BodyTypeResponseType::TEXT;
$ItemRequest->ItemShape->BodyTypeSpecified = true;
$ItemRequest->ItemIds = new EWSType_NonEmptyArrayOfBaseItemIdsType();
$ItemRequest->ItemIds->ItemId = new EWSType_ItemIdType();
$ItemRequest->ItemIds->ItemId->Id = $item->ItemId->Id;
$response = $ews->GetItem( $ItemRequest ); // Code fails here
}
所以我不知道为什么请求会失败。我尝试添加选项“exceptions”=> 0、“trace”=> 1,并且我可以看到 __last_response 确实包含我预期的响应。为什么即使我得到了正确的响应,它还是神秘地失败了?