0

I am using php-ews to read mailbox items, in order to process emails as support tickets.

As some are/could be part of conversations, I want to use the UniqueBody property, to get the latest/unique part of the message.

Example request:

$request = new GetItemType();
$request->ItemShape = new ItemResponseShapeType();
$request->ItemShape->BaseShape = DefaultShapeNamesType::ALL_PROPERTIES;
$request->ItemType = new ItemType();
$request->ItemType->UniqueBody = true;
$request->ItemIds = new NonEmptyArrayOfBaseItemIdsType();
$item = new ItemIdType();
$item->Id = 'MessageId';
$request->ItemIds->ItemId[] = $item;
$response = $client->GetItem($request); 

However, this results in the UniqueBody response being empty.

I have a feeling that the request value of UniqueBody is incorrect, but I cannot find any documentation, examples or other PHP solutions that help.

Has anyone know how to get this to work?

Thanks in advance,

Baz

oguz ismail
  • 1
  • 16
  • 47
  • 69
JustBaron
  • 2,319
  • 7
  • 25
  • 37

1 Answers1

0

OK, with a clearer head I've done a bit of digging around in the classes and found the solution.

Add this reference:

use \jamesiarmes\PhpEws\ArrayType\NonEmptyArrayOfPathsToElementType;

Then added the ItemShape->AdditionalProperties

$request->ItemShape->AdditionalProperties = new NonEmptyArrayOfPathsToElementType();            
$request->ItemShape->AdditionalProperties->FieldURI = new PathToUnindexedFieldType();
$request->ItemShape->AdditionalProperties->FieldURI->FieldURI = UnindexedFieldURIType::ITEM_UNIQUE_BODY;

To make this:

$request = new GetItemType();
$request->ItemShape = new ItemResponseShapeType();
$request->ItemShape->BaseShape = DefaultShapeNamesType::ALL_PROPERTIES;
$request->ItemShape->AdditionalProperties = new NonEmptyArrayOfPathsToElementType();            
$request->ItemShape->AdditionalProperties->FieldURI = new PathToUnindexedFieldType();
$request->ItemShape->AdditionalProperties->FieldURI->FieldURI = UnindexedFieldURIType::ITEM_UNIQUE_BODY;
$request->ItemIds = new NonEmptyArrayOfBaseItemIdsType();
$item = new ItemIdType();
$item->Id = 'MessageId';
$request->ItemIds->ItemId[] = $item;
$response = $client->GetItem($request); 

The response now contains the UniqueBody in HTML format

$response->ResponseMessages->GetItemResponseMessage[0]->Items->Message[0]->UniqueBody

Results in:

<html><body><div>
<div>
<div>
<div>
<div dir="ltr">
<div dir="ltr">Second message.</div>
<div dir="ltr">Kind regards</div>
<div dir="ltr">Me&nbsp;</div></div></div></div></div></div>
</body></html>
JustBaron
  • 2,319
  • 7
  • 25
  • 37