2016-04-06 36 views
2

現在、JavaScriptでOfficeアドインを開発していますが、Outlook WindowsリッチクライアントとOffice365 WebポータルのAPIの使いやすさにはいくつかの違いがあります。Outlook JavaScript API添付ファイル

現在、アドインは「ウェブ」モードのチャームのように動作しますが、リッチクライアントでは期待通りに動作しません。

アドインは、電子メール本文+添付ファイルを取得し、それをリモートアプリケーションサーバーに送信します。添付ファイルの

Office.context.mailbox.item.body.getAsync(Office.CoercionType.Html, { asyncContext: "html" }, function callback(resHtml) { 

    // dealing with email in HTML format 

}); 

、私はこのようにそれをやっている:

for (var i = 0; i < Office.context.mailbox.item.attachments.length; i++) { 
    var _att = Office.context.mailbox.item.attachments[i]; 

    attachments.assets.push({ 
     name: _att.name, 
     id: _att.id, 
     contentType: _att.contentType, 
     size: _att.size, 
     attachmentType: _att.attachmentType, 
     isInline: _att.isInline 
    }); 

} 

(JSアドインのみのリモートアプリに添付ファイルのメタデータを送信し、リモートアプリがExchangeに接続する必要があります。実際に提供するメタデータと添付ファイルをフェッチするEWS)

問題

インライン画像がある場合は添付

Webポータル

<img originalSrc="cid:[email protected]" src="data:image/gif;base64,..." width="310" height="15" id="x__x0000_i1030" alt="..."> 

リッチクライアント

<img src="~WRS%7b0E0FFAA4-6FC0-49C1-9BB6-3D1A2F5211F1%7d_fichiers/image001.jpg" width=906 height=245 id="Picture 6"> 

その他の場合:メールでのedは、Webポータルやリッチクライアントは、出力HTMLに完全に異なっそれを示してい手、Office.context.mailbox.item.attachmentsメソッドは、この種のオブジェクトを返します。

{ 
    "_data$p$0": { 
     "id": "AAMkAGI2MjY4MGQ....", 
     "name": "image004.png", 
     "contentType": "image/png", 
     "size": 427, 
     "attachmentType": 0, 
     "isInline": true 
    } 
} 

Web PortalのHTMLのインラインイメージをその名前で "cid:XYZ"にマップするのはかなり明白です。どのようにそれらをリッチクライアントにマップする必要がありますか?

リトル観察:でもattachment JSオブジェクトは、画像のための<img>タグがすべてでそれをルフレと~WRS...../image001.gifのようなものを示していない、画像がimage003.pngのようなものであると言います。 (ファイル名ではないidenticals、拡張子の不一致)

私は回避策を見つけたありがとう:)

答えて

0

、私は誰かが同じ問題に直面している場合にはそれをここに投稿してください。

JS APIを使用すると、さらにバックエンド側でSOAP Exchange Webサービス(EWS)に接続できるアクセストークンを取得できます。

アクセストークンは、トークンたらOffice.context.mailbox.getCallbackTokenAsync方法

を経由して取得可能で、品目IDとEwsURLが収集し、バックエンドに送信され、あなたは、プレーンテキストでどちらかメール本文を取得するために、EWSを使用することができますHTMLで完全に指定されたインライン画像を含む完全なHTML。

<img src="cid:[email protected]" />のようなものは、以前に取得した添付ファイルオブジェクトと完全に一致します。

ボーナス:EWSに接続するときは、伝統的にログイン/パスワードのカップルで接続します。この場合、これらの資格情報はわかりません。 HTTPヘッダは通常含まれています

Authorization: Bearer [accessToken] 

アクセストークンを経由してEWSに認証するための
Authorization: Basic [credentials] 

、あなたは次のようにそれを設定する必要があります

関連する問題