【问题标题】:Outlook 2016 does not render logo (image) in Event Email invitationOutlook 2016 不会在事件电子邮件邀请中呈现徽标(图像)
【发布时间】:2023-03-28 04:45:01
【问题描述】:

我们有一个适用于日历的 O365 加载项。它将 HTML 放在邀请的正文中。除了我们放置的图像外,一切都很好。如何使图像出现在邀请电子邮件视图中?

var logo = "<div style=\"line-height:60px\"><img src=\"https://static-a.test.com/a2/custom-assets/enterprise/4714/isg_logo/d05aa76d58614c0e88b864eec963cec0.png\" height=\"30\" alt=\"Test Meet\" style=\"user-select: none;\" tabindex=\"0\"></div>";

var formattedBody = agenda
            + _.repeat(newLine, 1)
            + logo
            + testInvitation;

return Q.oinvoke(Office.context.mailbox.item.body, "setAsync", formattedUserBody, { coercionType: coercionType })
           .then(function() {
                    logger.info("Add meeting completed successfully");
                });

是否有其他方法可以修复它或者它是 Outlook 的已知限制?

  • 徽标在日历视图中正确呈现,而不是在电子邮件视图中
  • 某些 VSTO 插件可以呈现徽标,但不能呈现 Office 365 插件
  • 在 OWA 和移动应用中可以看到徽标,但在 Outlook 2016 Mac 和 windows 中看不到

我们通过在 Outlook 2013 中关注此 link 解决了该问题。

----- 01/09/19 - 提供解决方案后的问题更新 ----------

解决方案修复了报告的主要问题。现在,我们可以在电子邮件邀请中看到徽标,但在日历视图中它已损坏。

修改后的代码:

var formattedBody = agenda
        + _.repeat(newLine, 1)
        +  "<img src='cid:testMeet.png'/>"
        + testInvitation;


Office.context.mailbox.item.addFileAttachmentAsync(
  "https://static-a.test.com/a2/custom-assets/enterprise/4714/isg_logo/d05aa76d58614c0e88b864eec963cec0.png",
  "testMeet.png",
  {asyncContext: null, isInline: true},
  function (asyncResult)  {
        Office.context.mailbox.item.body.setAsync( 
    formattedBody,
          { coercionType: Office.CoercionType.Html, asyncContext:null }); 
   });

此修复程序还会破坏 Outlook Mobile App 中的徽标呈现。请告知,因为我们需要在议程(如果有)和我们的文本之间有徽标。

---- 屏幕截图 01/16/2019 -----

----- 展望矩阵 01/26/2019 --------

【问题讨论】:

    标签: outlook office365 office-js outlook-web-addins


    【解决方案1】:

    以这种方式将图像添加到正文是不正确的,并且如您所见,有时会出错。相反,您应该使用addFileAttachmentAsync,更具体地说是isInline 属性,它允许您使用cid: 引用来添加图像。

    这方面的一个例子是:

    Office.context.mailbox.item.addFileAttachmentAsync(
      "https://static-a.test.com/a2/custom-assets/enterprise/4714/isg_logo/d05aa76d58614c0e88b864eec963cec0.png",
      "testMeet.png", 
      {asyncContext: null, isInline: true},  
      function (asyncResult)  {
            Office.context.mailbox.item.body.setAsync( 
              "<img src='cid:testMeet.png'/>", 
              { coercionType: Office.CoercionType.Html, asyncContext: null });
    });
    
    

    【讨论】:

    • @outlook-add-in-team-msft - 该解决方案适用于电子邮件视图,但在日历视图中中断。解释很长,因此在 2019 年 1 月 10 日更新了问题。
    • static-a.test.com/a2/custom-assets/enterprise/4714/isg_logo/… 处的图像返回 http 状态 302(错误重定向),因此附件实际上不是图像。我用这个指向图像的链接替换了您的代码:i.imgur.com/WJXklif.png 并且它有效。附带说明一下,如果您的 http 图像在标头中没有缓存标志,也会导致下载和附加图像出现问题。
    • @outlook-add-in-team-msft - 抱歉 - 这是我在这里使用的虚拟链接。我们使用了您在上面分享的图片链接。这种行为与我在 01/10 中提到的行为没有什么不同。它仅适用于电子邮件视图,不适用于日历视图。您能否建议我们如何使其在日历视图中呈现?
    • 我们正在调查这个错误。从 Outlook 桌面 Win32 发送到其他客户端时,我可以进行复制……但仅在发送到我组织外部的电子邮件地址时。例如,如果我从 joe@contoso.com 运行您的代码,将会议发送到 bob@contoso.com,则 bob 会收到会议请求(在电子邮件中)和带有正确图片的日历项。但是 joe@contoso.com 到 sue@othercompany.com。 Sue 将收到电子邮件会议请求,以及带有损坏图像的日历项目。
    • 你能详细描述你的复制步骤吗?由于您的“电子邮件视图”和“日历视图”有点混乱。我想确保您的症状与我看到的症状相符。在大多数情况下,我看到会议请求(电子邮件视图?)和“日历视图”都可以工作,或者两者都不起作用,只要它们是同一个用户。只有从另一个域发送给用户时才会中断。
    猜你喜欢
    • 2015-08-16
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    相关资源
    最近更新 更多