exchange-server - 电子预警系统。如何通过 EWS 代理类更改 DateTime Create 属性

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

我编写了使用 Exchange Web 服务代理类的客户端应用程序,以便连接到 Exchange Web 服务。有时,我需要创建 ItemType 对象并使其看起来像收到的信件。因此,我需要设置 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 不会给出任何错误,但 DateTimeCreate 不会改变。我尝试使用 DateTimeCreate 属性来 UpdateItem,但没有结果(更新另一个属性运行良好)。

附注创建时间的 MAPI ID:0x3007。

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

最佳答案

我终于找到了解决方案。

来源: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);

关于exchange-server - 电子预警系统。如何通过 EWS 代理类更改 DateTime Create 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16836778/

相关文章:

c# - EWS 中 ItemView 的最大尺寸是多少?

security - outlook如何加密windows凭据的密码

java - ews java api - 如何设置电子邮件的权限/分类(公共(public)/受限/内部)

C++ MAPI : MAPILogonEx, 如何打开默认邮件收件箱?

hadoop - 如何使用 hadoop Map reduce 处理/提取 .pst

c++ - Linux 和 C++ : Easy way to exchange objects between two processes

powershell - 使用 EWS PowerShell 获取共享交换日历

java - 如何在 CXF 中使用转换删除入站 XML 元素?

java - 如何从我的 Java 程序创建 Lync session ?

python - 获取特定 Outlook 文件夹/收件箱中的类别列表