You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

php-ews获取对话邮件UniqueBody为空,求正确实现方式

解决php-ews获取邮件UniqueBody为空的问题

你当前代码的问题在于错误地将UniqueBody属性设置在了ItemType实例上,正确的做法是通过ItemResponseShapeType的AdditionalProperties来指定需要返回UniqueBody字段。

修正后的请求代码

$request = new GetItemType();
$request->ItemShape = new ItemResponseShapeType();
// 保持BaseShape为ALL_PROPERTIES,也可根据需求调整为IdOnly/Default
$request->ItemShape->BaseShape = DefaultShapeNamesType::ALL_PROPERTIES;

// 创建要添加的额外字段:UniqueBody
$uniqueBodyField = new PathToUnindexedFieldType();
$uniqueBodyField->FieldURI = ItemSchema::UniqueBody;

// 初始化AdditionalProperties并添加UniqueBody字段
$request->ItemShape->AdditionalProperties = new NonEmptyArrayOfPathsToElementType();
$request->ItemShape->AdditionalProperties->FieldURIOrIndexedFieldURIOrExtendedFieldURI[] = $uniqueBodyField;

// 设置邮件ID
$request->ItemIds = new NonEmptyArrayOfBaseItemIdsType();
$item = new ItemIdType();
$item->Id = 'MessageId';
$request->ItemIds->ItemId[] = $item;

$response = $client->GetItem($request);

补充说明

  • 若修正后UniqueBody仍为空,大概率是该邮件不属于对话内容(非回复/转发邮件),此时UniqueBody字段会与Body内容一致或返回空值,这是Exchange的正常行为。
  • 若你的php-ews版本不支持ItemSchema::UniqueBody常量,可直接使用字符串值:'item:UniqueBody'。

内容的提问来源于stack exchange,提问作者JustBaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:01:00