現在、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、拡張子の不一致)
私は回避策を見つけたありがとう:)