Microsoft EWS设置未在Outlook自定义窗体上显示的MapiPropertyType.Currency类型的扩展属性

时间:2017-01-12 17:22:08

标签: c# exchangewebservices

目前,我有一个已分配自定义表单的Exchange公用文件夹。表单上的许多用户定义字段之一设置为货币。出于某种原因,无论我做什么,我都无法实际设置货币字段。

我创建了一个单独的文件夹和简单的自定义表单,其中一个字段的类型为Currency,如下所示:

Custom Form Setup

然后我可以创建Post Item并将其保存到已分配测试自定义表单的文件夹中,但遗憾的是我似乎无法设置TestCurrency扩展属性:

   var JobsSearchFilter = 
        new SearchFilter.IsEqualTo(FolderSchema.DisplayName, JobsFolderName);
    var JobsFolder = 
        service.FindFolders(WellKnownFolderName.PublicFoldersRoot, JobsSearchFilter, new FolderView(1)).Single();

    var JobsSearchFilter = 
        new SearchFilter.IsEqualTo(FolderSchema.DisplayName, jobFolderName);
    var ewsFolderUniqueId = 
        JobsFolder.FindFolders(JobsSearchFilter, new FolderView(1)).Single().Id;

    var postItem = new PostItem(service)
    {
        ItemClass = "IPM.Post.EWSTestingForm",
        Subject = "Testing Custom Forms"
    };

    postItem.SetExtendedProperty
        (new ExtendedPropertyDefinition
            (DefaultExtendedPropertySet.PublicStrings,
            "TestText",
            MapiPropertyType.String), "TestTextValue");
    postItem.SetExtendedProperty
        (new ExtendedPropertyDefinition(
            DefaultExtendedPropertySet.PublicStrings,
            "TestCurrency",
            MapiPropertyType.Currency), 1200.000);
    postItem.Save(ewsFolderUniqueId);

货币扩展属性字段需要特殊处理吗?所有其他字段似乎都有用(文本,布尔等)

有趣的是,当我进行更多调查时,事实证明MapiPropertyType.Currency的扩展属性正在发布到Exchange Server,因为我可以立即检索它,但自定义表单不会获取值。它似乎是它没有提起它的原因是因为EWS创建了PT_I8类型的扩展属性而不是PT_CURRENCY(通过OutlookSpy得到那些)。很可能是EWS中的一个错误是将MapiPropertType.Currency映射到正确的Exchange mapi类型...

Extended Properties set via EWS vs User Input in Custom Form

0 个答案:

没有答案