1

我在处理复杂数组时遇到了困难,可以使用一些帮助。我正在使用 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() 转储结果

4

1 回答 1

3

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

所以它看起来像ViewResults.getItems()返回一个对象数组EmailMessage。EmailMessage 有很多方法。一些返回简单值(布尔值、字符串、..),而另一些则getFrom()返回复杂对象。

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

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

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

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

(你明白了……)

于 2013-02-01T20:46:04.487 回答