我已經能夠使用php-ews API成功檢索Exchange 2010收件箱中的未讀電子郵件。然而,在我獲取電子郵件後,我想將電子郵件的IsRead屬性設置爲true,以便下次收到電子郵件時不會顯示這些消息。PHP-EWS 2010,如何設置IsRead標誌
以前有人做過這個嗎?
編輯:
這是我想設置的IsRead標誌:
$message_id = ''; //id of message
$change_key = ''; //change key
$response = $ews->GetItem($request);
//print_r($response);exit;
if($response->ResponseMessages->GetItemResponseMessage->ResponseCode == 'NoError' &&
$response->ResponseMessages->GetItemResponseMessage->ResponseClass == 'Success') {
$a = array();
$message = $response->ResponseMessages->GetItemResponseMessage->Items->Message;
$a['message_body'] = $message->Body->_;
$a['sender'] = $message->From->Mailbox->EmailAddress;
$a['subject'] = $message->ConversationTopic;
$data[] = $a;
//process the message data.
$messageType = new EWSType_MessageType();
$messageType->IsRead = true;
$path = new EWSType_PathToUnindexedFieldType();
$path->FieldURI = 'message:IsRead';
$setField = new EWSType_SetItemFieldType();
$setField->Message = $messageType;
$setField->FieldURI = $path;
$u = new EWSType_ItemChangeType();
$u->Updates = new EWSType_NonEmptyArrayOfItemChangeDescriptionsType();
$u->Updates->SetItemField = $setField;
$u->ItemId = new EWSType_ItemIdType();
$u->ItemId->Id = $message_id;
$u->ItemId->ChangeKey = $change_key;
$updatedItems = new EWSType_NonEmptyArrayOfItemChangesType();
$updatedItems->ItemChange = $u;
$updateMessenger = new EWSType_UpdateItemType();
$updateMessenger->ItemChanges = $updatedItems;
$updateMessenger->MessageDisposition = 'SaveOnly';
$updateMessenger->ConflictResolution = 'AutoResolve';
try {
$update_response = $ews->UpdateItem($updateMessenger);
}catch (Exception $e){
echo $e->getMessage();
}
}
當我跑我得到以下錯誤的文件:
An internal server error occurred. The operation failed.
的調試後有一段時間,我得出結論,錯誤發生在NTLMSoapClient.php文件的curl_exec函數中。
我不知道該從哪裏繼續。請幫忙。
嗨,我自己發現了這個問題。原來,這是因爲我創建ews對象時指定的Exchange版本。 updateItem函數執行但會引發此錯誤:更改描述中的對象必須包含一個且只有一個要修改的屬性。有任何想法嗎 ? – Lin