2

我編寫使用Exchange Web服務代理類來連接到Exchange Web服務的客戶端應用程序。有時,我需要創建ItemType對象,並使其看起來像收到的字母。因此,我需要設置ItemType類似DateTimeSent,DateTimeCreate,DateTimeReceived的屬性,但它們沒有公開設置評估。因此我需要設置ItemType類似DateTimeSent,DateTimeCreate,DateTimeReceived的屬性,但它們沒有公開設置評估者。EWS。如何通過EWS代理類更改DateTimeCreate屬性

我通過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。我試圖UpdateItem與DateTimeCreate propery,但沒有結果(更新另一個屬性運行正常)。

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

有人可以幫我解決這個問題嗎?

回答

2

創建和上次修改的日期是隻讀的,不能設置。商店提供商在內部更新這些屬性。

+0

DateTimeSent和DateTimeReceived是隻讀屬性太。但是有一些軟件,可以設置和更改CreationTime(例如OutlookSpy)。 我發現EWS Managed API的「解決方案」:[link](http://ireznykov.wordpress.com/2013/03/09/set-property-of-emailmessage-in-ews/)。但我無法讓它工作。 嗯,我認爲必須有一個解決方案.... – IStar

+0

沒有我知道的商店提供商會讓你改變創建和最後修改的日期。 OutlookSpy(我寫的)沒有魔杖。使用MAPI或Redemption可以更改發送日期和接收日期,這只是Outlook對象模型僅提供只讀訪問權限。 –

+0

感謝您的回答 – IStar

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); 
+0

這很棒!謝謝! –

+0

不客氣,很高興我能幫到你!這一個讓我撓了我很久! – LR2