EWS API和ColdFusion:如何引用返回的值

时间:2013-02-01 18:31:51

标签: api coldfusion exchangewebservices

我在处理复杂数组时遇到困难,可以使用一些帮助。我正在使用EWS API将邮件功能与Exchange 2010和CF集成。下面的代码连接到主帐户授予的邮箱。我想在收件箱中返回一个消息列表,并使用EWS返回的值(主题行,正文,从,等)。

我之前没有使用过这样的复杂数组,所以我对如何引用返回的值感到困惑,特别是在FindItemsResults中返回的getItems()方法中。我看过一个Java例子来完成同样的任务,但是我很难理解这是如何转换为CF的。 CFDump显示我收到了信息,因此我确信连接正在按预期工作。我只需要获取数据而不知道该怎么做。

提前感谢您的帮助。

<cfobject type="Java" class="microsoft.exchange.webservices.data.ExchangeService" name="service">
<cfset service.init()>

<cfobject type="Java" class="microsoft.exchange.webservices.data.WebCredentials" name="credentials">
<cfset credentials.init("username","password", "domain")>
<cfset service.setCredentials(credentials) />

<cfset service.AutodiscoverUrl("email@domain.com")>

<cfobject type="java" class="microsoft.exchange.webservices.data.WellKnownFolderName" name="WellKnownFolderName">

<cfset ViewResults = service.findItems(CreateObject("java","microsoft.exchange.webservices.data.FolderId").init(WellKnownFolderName.Inbox, 
CreateObject("java","microsoft.exchange.webservices.data.Mailbox").init("othermail@domain.com","SMTP")),
CreateObject("java","microsoft.exchange.webservices.data.ItemView").init(3)) />

<cfdump var="#ViewResults#">

<cfdump var="#ViewResults.getItems()#">

ViewResults.getItems() Dump Results

1 个答案:

答案 0 :(得分:3)

(来自评论......)

所以看起来ViewResults.getItems()返回EmailMessage个对象的数组。 EmailMessage有很多方法。一些返回简单值(boolean,string,..)和其他像getFrom()返回复杂对象。

尝试进行数组循环并在其中输出一个简单的属性,如:getIsRead()getReferences()。即

 <cfloop array="#itemsArray#" index="message"> 
     <cfdump var="#message.getIsRead()#" label="getIsRead()">
     <cfdump var="#message.getReferences()#" label="getReferences()">
 </cfloop>

如果可行,请尝试调用返回getFrom()对象的EmailAddress。检查API,但看起来您可以使用以下任一方式访问地址值:

    #message.getFrom().getAddress()#  ... or 
    #message.getFrom().get_Address()# 

(你明白了......)