2

我正在尝试使用PHP EWS在交换服务器上检索特定发件人的电子邮件列表。

我的代码示例专门与限制(搜索)构造相关:

$request->Restriction = new EWSType_RestrictionType();
$request->Restriction->IsEqualTo = new EWSType_IsEqualToType();

$request->Restriction->IsEqualTo->FieldURI = new EWSType_PathToUnindexedFieldType();
$request->Restriction->IsEqualTo->FieldURI->FieldURI = 'message:Sender';

$request->Restriction->IsEqualTo->FieldURIOrConstant = new EWSType_FieldURIOrConstantType();
$request->Restriction->IsEqualTo->FieldURIOrConstant->Constant->Value = 'Bob Smith';

这种类型的限制导致零结果。

我注意到当我不受限制地搜索时,返回的结果包含发件人信息(但它是嵌套的)。例如:

[Sender] => stdClass Object
  (
    [Mailbox] => stdClass Object
      (
        [Name] => Bob Smith
      )
  )

如何满足限制中的嵌套信息?

其他搜索表达式示例:https ://github.com/jamesiarmes/php-ews/wiki/Search-Expression:-Simple-Conditions

4

1 回答 1

4

根据MSDN文档, message:Sender 具有以下定义:

适当的价值

类型:Microsoft.Exchange.WebServices.Data.EmailAddress

一个电子邮件地址。

因此,不要使用限定名称“Bob Smith”(Outlook 可能会识别它,但 EWS 不知道),而是使用电子邮件地址 ('bsmith@foo.com')。

此外,虽然上面的代码应该可以工作,但它可能会抛出一个错误,因为 Constant 永远不会被定义。试试这个:

$request->Restriction->IsEqualTo->FieldURIOrConstant = new EWSType_FieldURIOrConstantType();
$request->Restriction->IsEqualTo->FieldURIOrConstant->Constant = new EWSType_ConstantValueType();
$request->Restriction->IsEqualTo->FieldURIOrConstant->Constant->Value = 'bsmith@foo.com';
于 2013-04-16T18:36:47.600 回答