Outlook 加载项 - 插入 HTML 和背景图片
Outlook add-in - Insert HTML with background image
我有一个 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 从传递给 insert?HTML 的 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.
}
});
感谢您的反馈。经过进一步调查,似乎没有很好的解决方法来实现您的场景。我们不断了解加载项开发人员的新要求,这有助于我们在平台上实现出色的场景。我们在用户语音页面上跟踪 Outlook 加载项功能请求。请在那里添加您的请求。在我们进行规划过程时,还会考虑用户语音的特征。
Link 转至用户语音:https://officespdev.uservoice.com/forums/224641-general/category/131778-outlook-add-ins。
再次感谢您的反馈,
Outlook 加载项工程团队
我有一个 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 从传递给 insert?HTML 的 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.
}
});
感谢您的反馈。经过进一步调查,似乎没有很好的解决方法来实现您的场景。我们不断了解加载项开发人员的新要求,这有助于我们在平台上实现出色的场景。我们在用户语音页面上跟踪 Outlook 加载项功能请求。请在那里添加您的请求。在我们进行规划过程时,还会考虑用户语音的特征。
Link 转至用户语音:https://officespdev.uservoice.com/forums/224641-general/category/131778-outlook-add-ins。
再次感谢您的反馈,
Outlook 加载项工程团队