Office365 将所选电子邮件作为附件附加到草稿电子邮件

Office365 将所选电子邮件作为附件附加到草稿电子邮件,office365,outlook-addin,office-js,outlook-restapi,outlook-web-addins,Office365,Outlook Addin,Office Js,Outlook Restapi,Outlook Web Addins,我正在尝试使用api将电子邮件项目作为附件添加到草稿电子邮件中,其中我提供该项目作为api的响应,但我遇到了如下错误: @odata.id, @odata.context, @odata.etag "The annotation 'odata.context' was found. This annotation is either not recognized or not expected at the current position." &如果我手动删除这两个注释,我会得到这些变量的错

我正在尝试使用api将电子邮件项目作为附件添加到草稿电子邮件中,其中我提供该项目作为api的响应,但我遇到了如下错误:

@odata.id, @odata.context, @odata.etag
"The annotation 'odata.context' was found. This annotation is either not recognized or not expected at the current position."
&如果我手动删除这两个注释,我会得到这些变量的错误。(在它给主题带来错误后,我停止了)


我确实看过这个。但我不确定是否可以使用此方法向草稿电子邮件项目添加附件。我尝试调用
item.addItemAttachmentAsync()
其中item是api的响应,但错误为
item.addItemAttachmentAsync不是函数

我觉得我好像做错了什么,有人能帮我吗

编辑:

我觉得我的问题有些混乱,所以让我添加更多的上下文。 我的外接程序在收件箱电子邮件项目上运行,因此当用户单击外接程序时,我希望将电子邮件
Office.context.mailbox.item
作为附件转发到某个电子邮件地址,包括
Office.context.mailbox.item
附件和电子邮件标题。这可以通过使用SOAP api实现

现在我使用的是RESTAPI,我无法像使用SOAP API那样,将邮件项目作为带有电子邮件标题和原始电子邮件数据表的附件转发。我正在使用创建一个新的草稿项,然后尝试编辑草稿项并附加


有了这个帮助,我可以将电子邮件作为附件发送。我最终从邮件项目附件中删除了
@odata.context
,并在邮件项目附件中添加了
“@odata.type”:#Microsoft.OutlookServices.message
。但现在附件中缺少附加的电子邮件标题。

要将该项目添加为附件,应使用Office.js中的功能

以下是如何执行此操作的示例:

// Example EWS Item ID
var itemId = "AAMkADU5ODYxOTI2LWQ5ODktNGNkMy05ZmU5LWY4ZWNlMmEwNDI4MwBGAAAAAAC8pAGEht5DRrHaTsDL/q5XBwCys1ms6AKZT7uAgKv13R58ABtsz8d7AABoPf5UVWMrTKxA5Yn7Am3VAAATUR7UAAA=";

Office.context.mailbox.item.addItemAttachmentAsync
(
    itemId,
    "message_name.msg",
    {
        // The values in asyncContext can be accessed in the callback
        "asyncContext" : { foo: 1, bar: 6, baz: true }
    },
    function (asyncResult)
    {
        showMessage(JSON.stringify(asyncResult));
    }
);
编辑: 要将当前项目作为附件添加到新的草稿邮件中,您可以使用:


您还可以根据上述请求中的场景添加到/cc收件人。

在我的帮助下,我可以将电子邮件作为附件发送。我最终从邮件项目附件中删除了
@odata.context
,并在邮件项目附件中添加了
“@odata.type”:#Microsoft.OutlookServices.message
。但是现在附件中缺少附加的电子邮件标题。item.addItemAttachmentAsync()是一个Office.js函数,用于从Outlook Web加载项中使用。您是否通过外接程序api进行调用?或者通过rest?我正在从Outlook Web加载项中进行rest api调用。您似乎有一个加载项正在草稿电子邮件上运行,并且希望将另一封电子邮件附加到草稿。我们没有API来获取另一封电子邮件。您是如何获得这封电子邮件的?我已编辑了我的问题,并提供了更多详细信息和迄今为止的进展。嘿,巴德,对不起,我想将附件添加到草稿项,而不是从中触发外接程序的当前邮件项<代码>Office.context.mailbox.item将是我的收件箱邮件。很遗憾,Office.js API目前不支持您正在查找的功能。我们将跟踪Outlook加载项功能请求。请在UserVoice上请求此功能。根据更新的场景详细信息更新了答案以建议displayNewMessageForm API。是否有任何方法在后台执行此操作?此外,转发电子邮件后,如果
Office.context.mailbox.item.itemId
包含任何附件,则附件将丢失原始电子邮件附件。该附件不是附件.msg文件的一部分,附件将位于发送的电子邮件中的.msg文件的旁边。我们无法使用答案中的代码复制该附件,在桌面Win 32 Outlook和OWA中。您使用的是哪个平台及其版本?你能清楚地分享复制步骤吗?这样我们就可以回复你了。
// Example EWS Item ID
var itemId = "AAMkADU5ODYxOTI2LWQ5ODktNGNkMy05ZmU5LWY4ZWNlMmEwNDI4MwBGAAAAAAC8pAGEht5DRrHaTsDL/q5XBwCys1ms6AKZT7uAgKv13R58ABtsz8d7AABoPf5UVWMrTKxA5Yn7Am3VAAATUR7UAAA=";

Office.context.mailbox.item.addItemAttachmentAsync
(
    itemId,
    "message_name.msg",
    {
        // The values in asyncContext can be accessed in the callback
        "asyncContext" : { foo: 1, bar: 6, baz: true }
    },
    function (asyncResult)
    {
        showMessage(JSON.stringify(asyncResult));
    }
);
Office.context.mailbox.displayNewMessageForm(
{
    htmlBody : "This is a sample with file and item attachments",
    attachments :
    [
        { type: "file", url: "http://i.imgur.com/9S36xvA.jpg", name: "dog.jpg" },
        { type: "item", itemId : Office.context.mailbox.item.itemId, name: "test_email.msg" }
    ],
    options : { asyncContext: null },
    callback : function (asyncResult)
    {
        if (asyncResult.status == "failed")
        {
            showMessage("Action failed with error: " + asyncResult.error.message);
        }
    }
});