我有一个outlook插件,应该将HTML插入约会。这可以通过调用:
来完成item.body.setSelectedDataAsync
我的问题是我尝试使用背景图片插入HTML。这在浏览器中使用Outlook时工作正常,但Outlook客户端需要使用VML的变通方法,如下所述: https://www.emailonacid.com/blog/article/email-development/emailology_vector_markup_language_and_backgrounds
我猜item.body.setSelectedDataAsync从传递给插入的HTML中剥离了VML所需的注释(如<!--[if gte mso 9]>
)?
如何在不同Outlook版本(浏览器和客户端)的加载项中使用背景图像添加HTML?
以下是用于插入HTML的JavaScript代码示例:
let htmlToInsert = '<table cellpadding="0" cellspacing="0" border="0" width="' + imageWidth + '" >';
htmlToInsert += '<tr><td style="text-align: center; font-size: x-large">' + this.props.roomMap.mapTitle + '</td></tr>';
htmlToInsert += '<tr><td valign="top" style="min-height:' + imageHeight + 'px;height:' + imageHeight + 'px; background-repeat: no-repeat; background-position: center bottom; width:' + imageWidth +';min-height:' + imageHeight + 'px;height:' + imageHeight + 'px;" background="' + this.props.roomMap.thumbnailUrl + '">';
htmlToInsert += '<!--[if gte mso 9]>';
htmlToInsert += '<v:rect style="width:' + imageWidth + 'px;height:' + imageHeight + 'px;" strokecolor="none">';
htmlToInsert += '<v:fill type="tile" src="'+ this.props.roomMap.thumbnailUrl +'" /></v:fill>';
htmlToInsert += '</v:rect>';
htmlToInsert += '<v:shape id="NameHere" style="position:absolute;width:' + imageWidth + 'px;height:' + imageHeight + 'px;">';
htmlToInsert += '<![endif]-->';
htmlToInsert += '<img src="https://www.meetingroommap.net/images/marker.png"/ style="margin-left:' + markerX + 'px; margin-top:' + markerY + 'px">';
htmlToInsert += '<!--[if gte mso 9]>';
htmlToInsert += '</v:shape>';
htmlToInsert += '<![endif]-->';
htmlToInsert += '</td></tr>';
htmlToInsert += '<tr><td style="text-align: center; font-size: xx-small">Powered by <a target="_blank" href="https://www.meetingroommap.net" >www.MeetingRoomMap.net</a></td></tr>';
htmlToInsert += '</table>';
console.log(htmlToInsert);
item.body.setSelectedDataAsync(
htmlToInsert,
{ coercionType: Office.CoercionType.Html,
asyncContext: { } },
function (asyncResult) {
if (asyncResult.status === Office.AsyncResultStatus.Failed){
console.log("Error calling item.body.setSelectedDataAsync: " + asyncResult.error.message);
}
else {
// Successfully set data in item body.
}
});
答案 0 :(得分:0)
感谢您的反馈。经过进一步调查后,似乎没有很好的解决方法来实现您的方案。我们将继续了解加载项开发人员的新要求,这有助于我们在平台上实现出色的方案。我们在用户语音页面上跟踪Outlook加载项功能请求。请在那里添加您的请求。当我们完成规划过程时,还会考虑用户语音的功能。
用户语音链接:https://officespdev.uservoice.com/forums/224641-general/category/131778-outlook-add-ins。
再次感谢您的反馈,
Outlook加载项工程团队