使用Office.js更新电子邮件正文时,行距增加的问题

时间:2018-07-30 22:46:23

标签: outlook-addin office-js outlook-2013 outlook-web-app outlook-2016

我正在为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,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;,NotoColorEmoji,&quot;Segoe UI Symbol&quot;,&quot;Android Emoji&quot;,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>&nbsp;</o:p></p>
  <p class="MsoNormal">This is a test email.<o:p></o:p></p>
  <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
  <p class="MsoNormal">Thank you,<o:p></o:p></p>
  <p class="MsoNormal">Steve<o:p></o:p></p>
</div>

在Outlook 2016中运行此代码导致测试电子邮件的行距发生变化, pictured here.

0 个答案:

没有答案