【问题标题】:EWS. How to change DateTimeCreate property via EWS Proxy Classes预警系统。如何通过 EWS 代理类更改 DateTime 创建属性
【发布时间】:2023-04-04 09:05:02
【问题描述】:

我编写了使用 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 doesnt 改变。我尝试使用 DateTimeCreate 属性更新Item,但没有结果(更新另一个属性运行正常)。

附: CreationTime 的 MAPI ID:0x3007。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • DateTimeSent 和 DateTimeReceived 也是只读属性。但是有很多软件可以设置和更改 CreationTime(例如 OutlookSpy)。我找到了 EWS 托管 API 的“解决方案”:link。但我不能让它工作。嗯,我认为必须有一个决心......
    • 据我所知,没有任何商店提供商会让您更改创建日期和上次修改日期。 OutlookSpy(我写的)没有魔杖。发送和接收日期可以使用 MAPI 或兑换很好地更改,只是 Outlook 对象模型仅提供只读访问权限。
    【解决方案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);
    

    【讨论】:

    • 不客气,很高兴我能帮上忙!这个让我挠了好久!
    猜你喜欢
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 2021-10-19
    • 2020-08-25
    相关资源
    最近更新 更多