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()複雑なオブジェクトを返すものもあります。

配列ループを実行してみて、その内部で次のような単純なプロパティの 1 つを出力してください:getIsRead()またはgetReferences(). すなわち

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

それが機能する場合は、オブジェクトgetFrom()を返す呼び出しを試してください。EmailAddressAPI を確認しますが、次のいずれかを使用してアドレス値にアクセスできるようです。

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

(あなたはアイデアを得る...)

于 2013-02-01T20:46:04.487 に答える