問題が見つかりました: 応答の一部 (メッセージ本文) に「」が含まれています。これは無効な XML 文字です。それを削除する方法はありますか?
Exchange Web サービスを使用して、受信トレイから大量の電子メールを取得しています。最初の 1141 通の電子メールでは機能しましたが、1142 では失敗しています (1143 までスキップすると問題なく動作します)。メールの取得に失敗する理由はわかりませんが、取得しているエラーは次のとおりです。
Uncaught SoapFault exception: [Client] looks like we got no XML document
1142 と 1143 の応答 XML をファイルに出力しましたが、唯一の違いは 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 DOES に期待どおりの応答が含まれていることがわかります。正しい応答が返ってきたのに、不思議なことに失敗したのはなぜですか?