使用EWS代理类设置DateTimeCreate

时间:2013-05-14 12:06:04

标签: c# exchangewebservices exchange-server

是否可以更改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);

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

如果要更改主题,则全部运行正常。

[UPDATE] 找到下一个解决方案,但它不起作用。 有使用扩展属性及其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);

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

1 个答案:

答案 0 :(得分: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");