Java 如何使用EWS托管API和ColdFusion搜索收件箱?

Java 如何使用EWS托管API和ColdFusion搜索收件箱?,java,coldfusion,exchange-server,exchangewebservices,Java,Coldfusion,Exchange Server,Exchangewebservices,我们使用ColdFusion 2016,并使用EWS API连接到exchange。我已经从下面的文章中获得了代码示例,但是我无法理解如何将SearchFilter与findItems()方法结合使用。 那么,基本上可以将这个Java代码翻译成Coldfusion吗 ItemView view = new ItemView(10); view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Ascending); vi

我们使用ColdFusion 2016,并使用EWS API连接到exchange。我已经从下面的文章中获得了代码示例,但是我无法理解如何将SearchFilter与findItems()方法结合使用。

那么,基本上可以将这个Java代码翻译成Coldfusion吗

ItemView view = new ItemView(10);
view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Ascending);
view.setPropertySet(new PropertySet(BasePropertySet.IdOnly, ItemSchema.Subject, ItemSchema.DateTimeReceived));

FindItemsResults<Item> findResults =
    service.findItems(WellKnownFolderName.Inbox,
        new SearchFilter.SearchFilterCollection(
            LogicalOperator.Or, new SearchFilter.ContainsSubstring(ItemSchema.Subject, "EWS"),
        new SearchFilter.ContainsSubstring(ItemSchema.Subject, "API")), view);

service.loadPropertiesForItems(findResults, PropertySet.FirstClassProperties);
System.out.println("Total number of items found: " + findResults.getTotalCount());

for (Item item : findResults) {
    System.out.println(item.getSubject());
    System.out.println(item.getBody());
    // Do something with the item.
}
(答案不完整,但太长,无法发表评论)

难怪。。。那是很多筑巢。我没有安装该库,但如果是我,我会首先将其分解为单独的语句,每行一个
new
对象。从最里面的构造函数开始:

new SearchFilter.ContainsSubstring(
          ItemSchema.Subject
        , "API"
    )
您需要先创建
ItemSchema
的实例,才能访问
Subject
属性。查看(没有可用的javadocs)路径应该是这样的:

ItemSchema = createObject("java", "microsoft.exchange.webservices.data.ItemSchema");
之后,继续创建
搜索过滤器
。注意类名中的句点
?关键字
new
后跟类名,包含句点,通常表示它是一个。内部类需要特殊语法,即
ParentClass$InnerClass
。像这样的方法应该会奏效:

APISubString = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter$ContainsSubstring");
writeDump(APISubString );
如果有效,请添加
init()
以初始化对象:

  APISubString = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter.ContainsSubstring").init(ItemSchema.Subject, "API");
然后移动到下一个最里面的对象:

new SearchFilter.ContainsSubstring(
           ItemSchema.Subject
          , "EWS"
    )
并对剩余的物体进行起泡、冲洗和重复操作:

// ItemSchema.Subject is a static value and can be reused
EWSSubString = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter.ContainsSubstring").init(ItemSchema.Subject, "EWS");

最后的工作结果是:

folderName = createObject("java", "microsoft.exchange.webservices.data.WellKnownFolderName");
itemView = CreateObject("java","microsoft.exchange.webservices.data.ItemView").init(10,0);
folderID = CreateObject("java","microsoft.exchange.webservices.data.FolderId").init(
        folderName.Inbox,
        mailBox
        );
sortDirection = CreateObject("java","microsoft.exchange.webservices.data.SortDirection");
basePropertySet = createObject("java", "microsoft.exchange.webservices.data.BasePropertySet");
propertyset = createObject("java", "microsoft.exchange.webservices.data.PropertySet");
itemSchema = createObject("java", "microsoft.exchange.webservices.data.ItemSchema");
searchFilterCollection = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter$SearchFilterCollection");
logicalOperator = createObject("java", "microsoft.exchange.webservices.data.LogicalOperator");
subString1 = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter$ContainsSubstring").init(
        itemSchema.Subject,
        "EWS"
        );
subString2 = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter$ContainsSubstring").init(
        itemSchema.Subject,
        "API"
        );
searchFilterCollection.add(SubString1);
searchFilterCollection.add(SubString2);
searchFilterCollection.setLogicalOperator(LogicalOperator.Or);
bodyType = createObject("java", "microsoft.exchange.webservices.data.BodyType");
propertyset.add(itemSchema.Subject);
propertyset.add(itemSchema.DateTimeReceived);
propertyset.setBasePropertySet(basePropertySet.IdOnly);
propertyset.setRequestedBodyType(bodyType.HTML);
itemView.getOrderBy().add(itemSchema.DateTimeReceived, sortDirection.Ascending);
itemView.setPropertySet(propertyset);
viewResults = service.findItems(folderID, searchFilterCollection, itemView);

(编辑)您对什么部分有困难?我不知道如何实例化searchFilter或SearchFilterCollection
code
SearchFilter.new SearchFilter.SearchFilterCollection(LogicalOperator.Or,new SearchFilter.ContainsSubstring(ItemSchema.Subject,“EWS”))
code
。创建此searchFilter对象时,它没有要处理的属性。我一定错过了什么。CreateObject(“java”、“microsoft.exchange.webservices.data.SearchFilter”);调用InnerClass的语法是我缺少的链接。谢谢很高兴它有帮助,谢谢你回来发布最终代码。
// ItemSchema.Subject is a static value and can be reused
EWSSubString = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter.ContainsSubstring").init(ItemSchema.Subject, "EWS");
folderName = createObject("java", "microsoft.exchange.webservices.data.WellKnownFolderName");
itemView = CreateObject("java","microsoft.exchange.webservices.data.ItemView").init(10,0);
folderID = CreateObject("java","microsoft.exchange.webservices.data.FolderId").init(
        folderName.Inbox,
        mailBox
        );
sortDirection = CreateObject("java","microsoft.exchange.webservices.data.SortDirection");
basePropertySet = createObject("java", "microsoft.exchange.webservices.data.BasePropertySet");
propertyset = createObject("java", "microsoft.exchange.webservices.data.PropertySet");
itemSchema = createObject("java", "microsoft.exchange.webservices.data.ItemSchema");
searchFilterCollection = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter$SearchFilterCollection");
logicalOperator = createObject("java", "microsoft.exchange.webservices.data.LogicalOperator");
subString1 = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter$ContainsSubstring").init(
        itemSchema.Subject,
        "EWS"
        );
subString2 = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter$ContainsSubstring").init(
        itemSchema.Subject,
        "API"
        );
searchFilterCollection.add(SubString1);
searchFilterCollection.add(SubString2);
searchFilterCollection.setLogicalOperator(LogicalOperator.Or);
bodyType = createObject("java", "microsoft.exchange.webservices.data.BodyType");
propertyset.add(itemSchema.Subject);
propertyset.add(itemSchema.DateTimeReceived);
propertyset.setBasePropertySet(basePropertySet.IdOnly);
propertyset.setRequestedBodyType(bodyType.HTML);
itemView.getOrderBy().add(itemSchema.DateTimeReceived, sortDirection.Ascending);
itemView.setPropertySet(propertyset);
viewResults = service.findItems(folderID, searchFilterCollection, itemView);