【问题标题】:Office Add-in Outlook API attach document using displayNewMessageForm method issue使用 displayNewMessageForm 方法问题的 Office 加载项 Outlook API 附加文档
【发布时间】:2018-11-14 03:19:13
【问题描述】:

我正在开发适用于 Outlook 的 Office 插件。需要打开带有预定义附件的新邮件。

尝试从当前项目(消息)中获取附件,如下所示:

 Office.context.mailbox.item.attachments

这是一个输出(我得到附件类型、id、大小等):

然后我尝试通过加载项 Outlook API 将此文件附加到 Outlook 中的新邮件,这是来自 Office Developer 的示例,我用它来附加我刚刚从另一封电子邮件中获得的文件(例如 '转发功能):

  Office.context.mailbox.displayNewMessageForm(
  {
    toRecipients: Office.context.mailbox.item.to, // Copy the To line from current item
    ccRecipients: ['sam@contoso.com'],
    subject: 'Outlook add-ins are cool!',
    htmlBody: 'Hello <b>World</b>!<br/><img src="cid:image.png"></i>',
    attachments: [
      {
        type: 'file',
        name: 'image.png',
        url: 'http://contoso.com/image.png',
        isInline: true
      }
    ]
  });

这是一个问题:我收到一个异常“值不在预期范围内”。参数名称:附件。

非常感谢您的帮助。

【问题讨论】:

  • 根据文档,您提供的屏幕截图显示错误的参数设置。 EWS ItemId 的附件只能输入“item”,屏幕截图显示附件为“file”。屏幕截图上的代码看起来不正确,因为 attachment 对象具有属性 itemId 并且该对象中没有 id。我建议您发布您实际使用的代码,而不是文档中的示例。
  • 实际上,我尝试了不同的场景,也尝试添加为项目,但错误相同prntscr.com/jr6hsd
  • 您的代码的最后一个屏幕截图也有错误。请仔细阅读documentation。 1. isInline 属性不应为 type 设置值'item'。 2.当type设置为'item'时,你必须设置itemId属性;你的代码由于某种原因设置id
  • 哦,是的,你是对的,我修复了选项,但是打开了一个没有附件的新窗口。我认为 Office.context.mailbox.item.attachments[0].id 不是 itemId,因为 ItemId 是一个最多 100 个字符的字符串(按文档),但我的 Id 长度为 160。你有建议如何获取或转换将 id 附加到 ews id? prntscr.com/jr92w6

标签: api outlook-addin add-in office-js outlook-restapi


【解决方案1】:

根据displayNewMessageForm 上的文档,目前支持两种附件类型。要将文件附加到项目,附件对象应如下所示...

{
    type: 'file',
    name: 'image.png',
    url: 'http://contoso.com/image.png',
    isInline: true
}

要附加现有消息中的项目,对象应该看起来...

{
    type: 'item',
    name: 'image.png',
    itemId: 'ews_item_id_goes_here'
}

【讨论】:

  • 谢谢,如果我使用 item.itemId 作为附件,那会起作用,但是当我使用 Office.context.mailbox.item.attachments[0].id 时,我想我有一条没有附件的新消息id 的问题,你知道如何获得正确的 ews id 吗?
  • 要将 REST 格式的 itemId 转换为 EWS,请使用函数 Office.context.mailbox.convertToEwsId
  • 是的,我也试过这个,但它不起作用。实际上,在这种方法之后,什么都没有发生 - id 是相同的。我尝试在服务器 (github.com/OfficeDev/Outlook-Add-in-JavaScript-GetAttachments) 上使用 SOAP 请求,它正在工作,但主要目标是附加新消息。
  • @SamLewis 我的错,当您遍历Office.context.mailbox.item.attachments 时,AttachmentDetails 已经应该有id 作为 Exchange 附件 ID,我假设它与 EWS Id 相同。为什么这个 ID 不适用于 attachment 对象我不确定。你介意发布另一个关于 ID 的问题吗?
  • @SamLewis 显然,您可以使用makeEwsRequestAsync 并使用类似于Get an attachment from an email by using EWS 的XML 请求直接从Exchange 检索附件ID,但它没有解释为什么您不能使用附件列表中的ID。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
相关资源
最近更新 更多