繁体   English   中英

使用EWS代理类设置DateTimeCreate

[英]Set DateTimeCreate with EWS Proxy classes

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

它工作正常,但我看不到任何变化。

第二种解决方案是正确的,但是有一些错误。 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");

暂无
暂无

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

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