简体   繁体   English

使用EWS代理类设置DateTimeCreate

[英]Set DateTimeCreate with EWS Proxy classes

Is it possible to change CreationDateTime, SentDateTime, etc.???? 是否可以更改CreationDateTime,SentDateTime等????

I`m tring to create/update message. 我正在尝试创建/更新消息。 All run fine, but i need to set field ItemType.CreateDateTime with my values (eg. I need to create message that has time creation not today, but year ego). 一切运行良好,但是我需要使用我的值设置字段ItemType.CreateDateTime(例如,我需要创建消息,该消息的创建时间不是今天,而是年份。) I have next code: 我有下一个代码:

//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);

That request return Error: "Set action is invalid for property." 该请求返回错误:“设置操作对属性无效”。

If im tring to change Subject, all run OK. 如果要更改主题,则一切正常。

[UPDATE] Found next solution, but it doesn`t work. [更新]找到了下一个解决方案,但是没有用。 There is using extended properties and their ids. 使用扩展属性及其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);

It works fine, but i don`t see any changes.. 它工作正常,但我看不到任何变化。

Second solution is correct, but there are some mistakes. 第二种解决方案是正确的,但是有一些错误。 1) It's better to get access to properties by PropertyTag. 1)最好通过PropertyTag访问属性。 2) You should only set up PropertyTag and PropertyType. 2)您只应设置PropertyTag和PropertyType。

Here is working code: 这是工作代码:

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");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM