我正在为Microsoft Outlook开发一个加载项,该加载项的一种行为是从撰写视图中将图像插入到邮件正文中。我将Office.js方法Office.context.mailbox.item.body.getAsync()
与HTML的强制类型一起使用,以HTML格式获取电子邮件正文。我将图像添加到电子邮件的HTML中,然后使用Office.js方法Office.context.mailbox.item.body.setAsync()
(也是强制类型的HTML)将电子邮件的正文替换为更新后的HTML。
在Outlook Web App中,一切正常。从Outlook桌面平台(Outlook 2016,Outlook 2013和Outlook for Mac),会对电子邮件正文进行意外的格式更改。这可能与使用Microsoft Word作为其文本编辑器的Outlook桌面平台有关。
我认为方法Office.context.mailbox.item.body.getAsync()
会引起两个副作用:
<o:p>
标签这两个副作用将导致电子邮件中的每一行都比以前占用更多垂直空间。有办法防止这两种副作用吗?
我已经编写了一些Javascript代码来重现此问题。从撰写视图运行此代码,以查看在Outlook Web App与台式机平台上打印的HTML正文值不同。
Office.context.mailbox.item.body.getAsync(Office.CoercionType.Html, function(asyncResult) {
if (asyncResult && asyncResult.status === Office.AsyncResultStatus.Succeeded) {
console.log('Value retrieved from getAsync(): ');
console.log(asyncResult.value);
// Isolate the email body's HTML, in case a word doc has been returned
var parser = new DOMParser();
var dom = parser.parseFromString(asyncResult.value, 'text/html');
var body = $(dom.body);
console.log('HTML body:');
console.log(body.html());
// Setting the email's body to be our html content:
Office.context.mailbox.item.body.setAsync(body.html(), {
coercionType: Office.CoercionType.Html
}, function() {
console.log('Complete');
});
}
});
使用此示例代码,测试电子邮件的HTML正文值为Web应用程序中的以下内容:
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif">
<p style="margin-top:0; margin-bottom:0">Hello,</p>
<p style="margin-top:0; margin-bottom:0"><br></p>
<p style="margin-top:0; margin-bottom:0">This is a test email.</p>
<p style="margin-top:0; margin-bottom:0"><br></p>
<p style="margin-top:0; margin-bottom:0">Thank you,</p>
<p style="margin-top:0; margin-bottom:0">Steve</p>
<div id="x_Signature">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<p style="margin-top:0; margin-bottom:0"></p>
</div>
</div>
</div>
</div>
在Outlook 2016中,该值为:
<div class="WordSection1">
<p class="MsoNormal">Hello,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This is a test email.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thank you,<o:p></o:p></p>
<p class="MsoNormal">Steve<o:p></o:p></p>
</div>