【发布时间】:2018-06-19 04:58:17
【问题描述】:
我正在通过撰写邮件将内联图像添加到 Outlook 正文并提出了这个问题。这是 addFileAttachmentAysnc 的文档:
Office.context.mailbox.item.addFileAttachmentAsync(attachmentURL, attachmentURL, options, callback);
我的 attachmentURL 是一个查询字符串,包含图像 ID、用户令牌、smtp:
http://namiq-pc/MailForms/api/GetAttachment?AttId=logo.png&MwToken=eteFIPebdPIKTLhfWKXDirp/rhdEVLmBxnKVU69mM36HgJCiINang8QDnB9w4ibKX6YG58esb1Kxa4oPw6s+QenADodv21An6/rjOkBIY1u5KObhrGhZFfOFRRD0+K7Q69J0VmL+6GY=&ReqId=HCYJ+G/WakTy/s1Hz5kURnU4cuANAb83lQ==&userSmtp=tw1621@mdev.org
一旦我完成了我的撰写表单(一个弹出窗口),我点击完成,这应该将图像添加到正文中。我还应该提到,在我的控制器上,我正在检查用户的 IP,以确保他们被允许发出请求。当 addFileAttachmentAsync 完成时,它将 img src 设置为 "cid:xxxx" 并调用
Office.cast.item.toItemCompose(Office.context.mailbox.item).body.setSelectedDataAsync(body,{coercionType: "html", asyncContext: "set message body" }
当我点击完成时,文本内容被很好地添加,我精简渲染图像源强制它再次进入我的控制器并且 IP 检查失败,因为现在是 Outlook 发出请求而不是用户(IP 地址请求采用 IPv6 格式)。 (IP检查有10.10.xx.xx格式的潜在用户IP地址列表)。
现在在我的电子邮件正文中,我得到了一个损坏的图像,其中我的附件 URL 作为来源,而 originalsrc 是我设置的
<div class="x_mw-images"><img src="http://namiq-pc/MailForms/api/GetAttachment?AttId=logo.png&MwToken=eteFIPebdPIKTLhfWKXDirp/rhdEVLmBxnKVU69mM36HgJCiINang8QDnB9w4ibKOnFdBCeOpo1Nr8bCtXa4vyQ5PI/bOg8yTI/qpY5HVNpPVBQJghdmnAfgR/WTaGk0hAiQn3237yU=&ReqId=IOyOCna5kLpAKN6EjFKuNExpYNANAb83lQ==&userSmtp=tw1621@mdev.org" alt="logo.png" height="100" originalsrc="cid:1528819032946.png" size="90196" style="user-select: none;"></div>
我理解的方式是无论您放置源 Outlook 都会使用附件 URL 覆盖它,并将您的“src”值设置为原始源。检查 IP 地址对我来说是至关重要的一步,任何想法如何解决这个问题或者解释我做错了什么都会有所帮助。
【问题讨论】:
-
使用 IP 地址验证用户有其挑战,因为网络配置可能会发生变化。您是否查看过交换身份令牌以确定用户授权?
-
我想出了解决这个问题的办法。我的代码的工作方式是,它首先发送一个带有用户令牌和路径的 POST 请求。此 POST 请求返回需要从服务器获取的文件名。然后我用这些文件名和其他一些细节调用 addFileAttachmentAsync 来帮助进行身份验证。当 addFileAttachmentAsync 向服务器发出 GET 请求时,我会进行 IP 检查。由于 IP 安全列表,此步骤成功。在 IP 检查失败的情况下,我只是通过比较 IP 的哈希来确保 POST 和 GET 请求都是由同一地址发送的
标签: javascript office-js outlook-web-addins