Outlook JavaScript api attachments
Outlook JavaScript api attachments
当前正在开发JavaScript中的Office Add-In,我注意到Outlook Windows富客户端和Office365 Web门户在API可用性方面存在一些差异。
我的外接程序目前在"web"模式下运行得很好,但在富客户端中并不像预期的那样。
外接程序获取电子邮件正文+附件,并将其发送到远程应用程序服务器。
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才能使用提供的元数据实际获取附件)
问题
当电子邮件中附加了内联图像时,门户网站和富客户端在输出HTML:中显示的图像完全不同
门户网站
<img originalSrc="cid:image004.png@01D18392.E4A15FE0" 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">
另一方面,方法Office.context.mailbox.item.attachments
返回这类对象:
{
"_data$p$0": {
"id": "AAMkAGI2MjY4MGQ....",
"name": "image004.png",
"contentType": "image/png",
"size": 427,
"attachmentType": 0,
"isInline": true
}
}
很明显,通过名称将内联图像映射到门户网站HTML中的"cid:XYZ",我应该如何在富客户端中映射它们?
几乎没有观察到:即使attachment
JS对象说图像有点像image003.png
,图像的<img>
标签也根本没有反射它,而是显示出类似~WRS...../image001.gif
的东西。(文件名不一致,扩展名不匹配)
谢谢:)
我找到了一个解决方法,我把它发布在这里,以防有人面临同样的问题。
使用JS API,可以检索访问令牌,该令牌可以进一步用于后端连接到SOAP Exchange Web服务(EWS)。
访问令牌可通过Office.context.mailbox.getCallbackTokenAsync
方法检索
一旦收集了令牌、itemId和EwsURL并将其发送到后端,就可以使用EWS以纯文本或HTML格式检索邮件正文,HTML中正确指定了内联图像。
您将收到类似<img src="cid:xyz@123" />
的内容,它与之前检索到的附件对象完全匹配。
额外奖励:当连接到EWS时,您传统上使用登录/密码对进行连接。在这种情况下,您不知道这些凭据。HTTP标头通常包含:
Authorization: Basic [credentials]
要通过访问令牌向EWS进行身份验证,您必须将其设置如下:
Authorization: Bearer [accessToken]
- 如何更改bigquery API中的计费层选项
- Amazon S3 REST API大小不正确
- 客户端服务器REST API captcha实现
- 使用Facebook live API创建实时视频对象时的隐私设置
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- API密钥使用和检查示例
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- 谷歌地图JS API+JSON-多个标记没有显示
- 单击超链接时,如何使用Google Maps API v3缩放地图
- 如何在 API 调用后和 if 语句中启用提交按钮
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 搜索api在mac上显示对话框
- Backbone.js restful json API design
- 标记的实时更新,无需加载页面谷歌地图API V3
- 是否可以使用iframe API在iOS浏览器上播放youtube视频
- 对API数据使用声明性绑定
- Outlook JavaScript api attachments