5

PHPEWS 経由で Microsoft Exchange サーバーの物理アドレスを更新するコードを書くのに忙しいです。

しかし、私の人生では、物理アドレスを更新する方法がまったくわかりません。これ以外はすべて更新できます。

これが私のコードです。

// Update Physical Address.
$field = new EWSType_SetItemFieldType();
$field->IndexedFieldURI->FieldURI = 'contacts:PhysicalAddress:Street';
$field->IndexedFieldURI->FieldIndex = EWSType_PhysicalAddressKeyType::HOME;

$field->Contact = new EWSType_ContactItemType();
$field->Contact->PhysicalAddress = new EWSType_PhysicalAddressDictionaryType();

$address = new EWSType_PhysicalAddressDictionaryEntryType();
$address->Key = EWSType_PhysicalAddressKeyType::HOME;
$address->_ = $street;

$field->Contact->PhysicalAddresses->Entry = $address;
$change->Updates->SetItemField[] = $field;

次のエラーが発生し続けます

Array ( [0] => stdClass Object ( [MessageText] => An object within a change description must contain one and only one property to modify. [ResponseCode] => ErrorIncorrectUpdatePropertyCount [DescriptiveLinkKey] => 0 [ResponseClass] => Error [Items] => stdClass Object ( ) ) ) 

誰かが助けてくれることを願っています

4

1 に答える 1

5

何時間もの試行錯誤の後、私はついに自分でそれを解決しました.

ここにコードがあります、

// Update Physical Address.
$field = new EWSType_SetItemFieldType(); 
$field->IndexedFieldURI->FieldURI = 'contacts:PhysicalAddress:Street';
$field->IndexedFieldURI->FieldIndex = EWSType_PhysicalAddressKeyType::HOME;

$field->Contact = new EWSType_ContactItemType();
$field->Contact->PhysicalAddresses = new EWSType_PhysicalAddressDictionaryType();
$address = new EWSType_PhysicalAddressDictionaryEntryType();
$address->Key = EWSType_PhysicalAddressKeyType::HOME;

$field->Contact->PhysicalAddresses->Entry = $address;
$field->Contact->PhysicalAddresses->Entry->Street = $street;

$change->Updates->SetItemField[] = $field; 

基本的に、FieldURI とフィールド インデックスを設定します (更新するときは、一度に 1 つのアイテムしか更新できないことに注意してください)、FieldURI が「contacts:PhysicalAddress:Street」に設定されていることがわかります。これは、1 つのアイテムしか更新できないためです。時間。

次に、Contact タグ、PhysicalAddresses タグ、Entry タグを作成し、ホームのキーを指定して、Street タグを設定します。

作成される実際の XML は次のようになります。

<t:SetItemField>
<t:IndexedFieldURI FieldURI="contacts:PhysicalAddress:CountryOrRegion" FieldIndex="Business" />
<t:Contact>
<t:PhysicalAddresses>
<t:Entry Key="Business">
<t:CountryOrRegion>
</t:CountryOrRegion>
</t:Entry>
</t:PhysicalAddresses>
</t:Contact>
</t:SetItemField>

以上で、番地の住所が更新されます。後は、コードをループに入れ、スイッチを使用して、住所のどの部分を更新するかを確認し、叔父をボブするだけです。

ああ、これが誰かに役立つことを願っています。

于 2012-11-19T19:24:03.860 に答える