我在处理复杂数组时遇到困难,可以使用一些帮助。我正在使用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()#">
答案 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()#
(你明白了......)