EWS。如何通过EWS代理类更改DateTime创建属性

时间:2013-05-30 12:52:57

标签: exchange-server exchangewebservices mapi exchange-server-2010

我编写了使用Exchange Web服务代理类的客户端应用程序,以便连接到Exchange Web服务。有时,我需要创建ItemType对象并使其看起来像收到的字母。因此,我需要将ItemType的这些属性设置为DateTimeSent,DateTimeCreate,DateTimeReceived,但它们没有公共集评估。因此我需要将ItemType的这些属性设置为DateTimeSent,DateTimeCreate,DateTimeReceived,但它们没有公共集评估器。

我通过MAPI属性找到了其中一些解析:

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

嗯,它适用于DateTimeSent和DateTimeReceived,但不适用于DateTimeCreate。 ES不要t give any errors, but DateTimeCreate doesn改变。我尝试使用DateTimeCreate propery UpdateItem,但没有结果(更新另一个属性运行正常)。

P.S。 CreationTime的MAPI ID:0x3007。

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

创建和上次修改日期是只读的,无法设置。商店提供商在内部更新这些属性。

答案 1 :(得分:2)

我终于找到了解决方案。

来源:https://social.msdn.microsoft.com/Forums/en-US/40a29c69-96d3-488b-8f0e-911dd5f04086/setting-a-emailmessage-datetimesent-and-isdraft?forum=exchangesvrdevelopment

您必须设置3个扩展MAPI属性PR_MESSAGE_FLAGS,PR_MESSAGE_DELIVERY_TIME和PR_CLIENT_SUBMIT_TIME。确保在设置使用UTC时间的时间。

例如:

        EmailMessage emUploadEmail = new EmailMessage(service);
        emUploadEmail.MimeContent = new MimeContent("us-ascii", bdBinaryData1);
        //  PR_CLIENT_SUBMIT_TIME
        emUploadEmail.SetExtendedProperty(new ExtendedPropertyDefinition(57,MapiPropertyType.SystemTime), DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"));
        // PR_MESSAGE_DELIVERY_TIME 
        emUploadEmail.SetExtendedProperty(new ExtendedPropertyDefinition(3590, MapiPropertyType.SystemTime), DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"));
        //  PR_MESSAGE_FLAGS
        emUploadEmail.SetExtendedProperty(new ExtendedPropertyDefinition(3591,MapiPropertyType.Integer),"1");
        emUploadEmail.Save(WellKnownFolderName.Inbox);