1

是否可以更改 CreationDateTime、SentDateTime 等????

我正在尝试创建/更新消息。一切运行良好,但我需要用我的值设置字段 ItemType.CreateDateTime(例如,我需要创建不是今天创建时间的消息,而是一年自我)。我有下一个代码:

//Update created item
            ItemIdType itemId = new ItemIdType();
            itemId.Id = savedMessageId;
            itemId.ChangeKey = savedMessageChangeKey;

            ItemType setCreateDT = new ItemType();
            setCreateDT.DateTimeCreated = new System.DateTime(2000, 10, 10, 12, 12, 12);
            setCreateDT.DateTimeCreatedSpecified = true;

            SetItemFieldType setItemField = new SetItemFieldType();
            setItemField.Item = new PathToUnindexedFieldType();
            (setItemField.Item as PathToUnindexedFieldType).FieldURI = UnindexedFieldURIType.itemDateTimeCreated;
            setItemField.Item1 = setCreateDT;

            UpdateItemType request = new UpdateItemType();
            request.ItemChanges = new ItemChangeType[1] { new ItemChangeType() };
            request.ItemChanges[0].Item = itemId;
            request.ItemChanges[0].Updates = new ItemChangeDescriptionType[1];
            request.ItemChanges[0].Updates[0] = setItemField;
            request.MessageDisposition = MessageDispositionType.SaveOnly;
            request.MessageDispositionSpecified = true;

            UpdateItemResponseType updateItemResponse = m_mailbox.UpdateItem(request);

该请求返回错误:“设置操作对属性无效。”

如果我想更改主题,一切运行正常。

[更新] 找到下一个解决方案,但它不起作用。有使用扩展属性及其 id。

PathToExtendedFieldType q = new PathToExtendedFieldType();
        q.PropertyId = 3590; //DeliveryTime
        q.PropertyType = MapiPropertyTypeType.SystemTime;
        q.PropertyIdSpecified = true;
        newItem.ExtendedProperty[0] = new ExtendedPropertyType();
        newItem.ExtendedProperty[0].ExtendedFieldURI = q;
        newItem.ExtendedProperty[0].ExtendedFieldURI.DistinguishedPropertySetIdSpecified = true;
        newItem.ExtendedProperty[0].Item = new System.DateTime(2013, 5, 5, 5, 5, 5).ToString("yyyy-MM-ddTHH:mm:ssZ");

...

CreateItemResponseType createItemResponse = m_mailbox.CreateItem(createItemType);

它工作正常,但我没有看到任何变化..

4

1 回答 1

1

第二种解决方案是正确的,但有一些错误。1) 最好通过 PropertyTag 访问属性。2) 你应该只设置PropertyTag 和PropertyType。

这是工作代码:

ItemType newItem = xmlParser.LoadItem(); //info for newItem takes from xml
        newItem.ExtendedProperty = new ExtendedPropertyType[1];
        PathToExtendedFieldType q = new PathToExtendedFieldType();
        q.PropertyTag = "3590"; //DeliveryTime
        q.PropertyType = MapiPropertyTypeType.SystemTime;
        newItem.ExtendedProperty[0] = new ExtendedPropertyType();
        newItem.ExtendedProperty[0].ExtendedFieldURI = q;
        newItem.ExtendedProperty[0].Item = new System.DateTime(2014, 5, 5, 5, 5, 5).ToString("yyyy-MM-ddTHH:mm:ssZ");
于 2013-05-20T11:43:01.683 回答