Прикрепить выбранное письмо как вложение к черновику письма - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь добавить элемент электронной почты в качестве вложения к черновику электронной почты, используя create-an-item-attachment api, где я предоставляю Item в качестве ответ get-a-message 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."

& если я вручную удаляю эти 2 аннотации, я получаю сообщение об ошибке для этих переменных (я остановился после того, как он выдал ошибку субъекту)

ReceivedDateTime, SentDateTime, HasAttachments, Subject

The property 'HasAttachments' does not exist on type 'Microsoft.OutlookServices.Item'. Make sure to only use property names that are defined by the type or mark the type as open type.

Я взглянул на этот ТАК * ответ . Но я не уверен, что смогу использовать этот метод для добавления вложения к черновому элементу электронной почты. Я пытался позвонить item.addItemAttachmentAsync(), где item является ответом get-a-message api, но получил ошибку как item.addItemAttachmentAsync is not a function

Я чувствую, что здесь что-то не так, может кто-нибудь помочь.

Изменить:

Я чувствую, что в моем вопросе есть некоторая путаница, поэтому позвольте мне добавить больше контекста. Моя надстройка работает с элементом электронной почты «Входящие», поэтому, когда пользователь нажимает на надстройку, я хочу переслать письмо Office.context.mailbox.item на какой-либо адрес электронной почты в виде вложения, включая вложения Office.context.mailbox.item и заголовки сообщений. Это было возможно с помощью SOAP API, используя что-то вроде этого .

Теперь, когда я использую Rest API, я не могу сделать то же самое, что и я, используя SOAP api, переслать почтовый элемент в виде вложения с заголовками электронной почты и оригинальными почтовыми надписями. Я создаю новый черновой элемент, используя / createforward , а затем пытаюсь отредактировать черновой элемент и прикрепить / attachments .

С помощью этого ТАКОГО сообщения мне удалось отправить электронное письмо в виде вложения. В итоге я удалил @odata.context из сообщения itemAttachment и добавил "@odata.type" : #Microsoft.OutlookServices.Message к сообщению itemAttachment. Но теперь вложенные заголовки электронной почты отсутствуют во вложении.

1 Ответ

0 голосов
/ 15 января 2019

Чтобы добавить элемент в качестве вложения, вы должны использовать функцию item.addFileAttachmentAsync () из 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));
    }
);

Edit: Чтобы добавить текущий элемент в качестве вложения в новое черновое сообщение, вы можете использовать displayNewMessageFormAPI :

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);
        }
    }
});

Вы также можете добавить к / cc получателей в соответствии с вашим сценарием в приведенном выше запросе.

...